Hoe krijg ik de huidige tijd en datum in een Android-app?
Antwoord 1, autoriteit 100%
Je zou kunnen gebruiken:
import java.util.Calendar
Date currentTime = Calendar.getInstance().getTime();
Er zijn genoeg constanten in Agenda voor alles wat je nodig hebt.
Bewerken:
Bekijk de Documentatie voor agendaklassen
Antwoord 2, autoriteit 35%
U kunt (maar niet langer– zie hieronder!) android.text.format.Time:
Time now = new Time();
now.setToNow();
Van de hierboven gelinkte referentie:
De klasse Time is een snellere vervanging
voor de java.util.Calendar en
java.util.GregorianCalendar klassen.
Een exemplaar van de klasse Time
vertegenwoordigt een moment in de tijd, gespecificeerd
met tweede precisie.
OPMERKING 1:
Het is een aantal jaren geleden dat ik dit antwoord schreef,
en het gaat over een oude, Android-specifieke en nu verouderde klasse.
Google zegt nudat
“[t]zijn klas heeft een aantal problemen en het wordt aanbevolen om GregorianCalendarwordt in plaats daarvan gebruikt”.
OPMERKING 2:Hoewel de klasse Time
een toMillis(ignoreDaylightSavings)
-methode heeft, is dit slechts een gemak om door te geven aan methoden die verwacht tijd in milliseconden. De tijdwaarde is slechts tot op één seconde nauwkeurig; het gedeelte in milliseconden is altijd 000
. Als je in een lus zit
Time time = new Time(); time.setToNow();
Log.d("TIME TEST", Long.toString(time.toMillis(false)));
... do something that takes more than one millisecond, but less than one second ...
De resulterende reeks herhaalt dezelfde waarde, zoals 1410543204000
, totdat de volgende seconde is begonnen, waarna 1410543205000
zich begint te herhalen.
Antwoord 3, autoriteit 29%
Als u de datum en tijd in een specifiek patroon wilt krijgen, kunt u het volgende gebruiken:
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
String currentDateandTime = sdf.format(new Date());
Of,
Datum:
String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
Tijd:
String currentTime = new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
Antwoord 4, autoriteit 17%
Voor degenen die liever een aangepast formaat prefereren, kunt u het volgende gebruiken:
DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, HH:mm");
String date = df.format(Calendar.getInstance().getTime());
Terwijl je DateFormat-patronen kunt hebben zoals:
"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01
Antwoord 5, autoriteit 9%
Eigenlijk is het veiliger om de huidige tijdzone op het apparaat in te stellen met Time.getCurrentTimezone()
, anders krijg je de huidige tijd in UTC.
Time today = new Time(Time.getCurrentTimezone());
today.setToNow();
Vervolgens kunt u alle gewenste datumvelden krijgen, zoals bijvoorbeeld:
textViewDay.setText(today.monthDay + ""); // Day of the month (1-31)
textViewMonth.setText(today.month + ""); // Month (0-11)
textViewYear.setText(today.year + ""); // Year
textViewTime.setText(today.format("%k:%M:%S")); // Current time
Bekijk de klasse android.text.format.Timevoor alle details.
UPDATE
Zoals veel mensen aangeven, zegt Google dat deze les een aantal problemen heeft en niet meer gebruikt mag worden:
Deze les heeft een aantal problemen en het wordt aanbevolen dat:
Gregoriancalendar wordt in plaats daarvan gebruikt.Bekende problemen:
Om historische redenen bij het uitvoeren van tijdberekeningen
Rekenkundige vindt momenteel plaats met behulp van 32-bits gehele getallen. Deze limieten
het betrouwbare tijdbereik representeerbaar uit 1902 tot 2037.Zie de
Wikipedia-artikel over het probleem van het jaar 2038 voor meer informatie. Vertrouw er niet op
dit gedrag; Het kan in de toekomst veranderen. Roeping
SwitchTimeZone (string) op een datum die niet kan bestaan, zoals een muur
Tijd die werd overgeslagen vanwege een DST-transitie, zal resulteren in een datum
in 1969 (d.w.z. -1, of 1 seconde vóór de 1 januari 1970 UTC). Veel van de
Formatteren / parseren veronderstelt ASCII-tekst en is daarom niet geschikt
voor gebruik met niet-ASCII-scripts.
6, Autoriteit 6%
Gebruik voor de huidige datum en tijd:
String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
Welke uitgangen:
Feb 27, 2012 5:41:23 PM
Antwoord 7, autoriteit 4%
Probeer het op deze manier. Alle formaten worden hieronder gegeven om de datum- en tijdnotatie te krijgen.
Calendar c = Calendar.getInstance();
SimpleDateFormat dateformat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss aa");
String datetime = dateformat.format(c.getTime());
System.out.println(datetime);
8, Autoriteit 4%
De huidige tijd die u kunt gebruiken System.currentTimeMillis()
die standaard is in Java. Dan kunt u het gebruiken om een datum te maken
Date currentDate = new Date(System.currentTimeMillis());
en zoals vermeld door anderen om een tijd
te maken
Time currentTime = new Time();
currentTime.setToNow();
9, Autoriteit 3%
U kunt de code gebruiken:
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());
Uitgang:
2014-11-11 00:47:55
U krijgt ook enkele meer opmaakopties voor SimpleDateFormat
van Hier .
10, Autoriteit 2%
eenvoudig, u kunt de tijd ontleden om afzonderlijke waarden te krijgen voor de huidige tijd, als volgt:
Calendar cal = Calendar.getInstance();
int millisecond = cal.get(Calendar.MILLISECOND);
int second = cal.get(Calendar.SECOND);
int minute = cal.get(Calendar.MINUTE);
//12 hour format
int hour = cal.get(Calendar.HOUR);
//24 hour format
int hourofday = cal.get(Calendar.HOUR_OF_DAY);
hetzelfde geldt voor de datum, als volgt:
Calendar cal = Calendar.getInstance();
int dayofyear = cal.get(Calendar.DAY_OF_YEAR);
int year = cal.get(Calendar.YEAR);
int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
int dayofmonth = cal.get(Calendar.DAY_OF_MONTH);
Antwoord 11, autoriteit 2%
Er zijn verschillende opties aangezien Android voornamelijk Java is, maar als je het in een textView wilt schrijven, zou de volgende code voldoende zijn:
String currentDateTimeString = DateFormat.getDateInstance().format(new Date());
// textView is the TextView view that should display it
textView.setText(currentDateTimeString);
Antwoord 12, autoriteit 2%
SimpleDateFormat databaseDateTimeFormate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat databaseDateFormate = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("dd.MM.yy");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd G 'at' hh:mm:ss z");
SimpleDateFormat sdf3 = new SimpleDateFormat("EEE, MMM d, ''yy");
SimpleDateFormat sdf4 = new SimpleDateFormat("h:mm a");
SimpleDateFormat sdf5 = new SimpleDateFormat("h:mm");
SimpleDateFormat sdf6 = new SimpleDateFormat("H:mm:ss:SSS");
SimpleDateFormat sdf7 = new SimpleDateFormat("K:mm a,z");
SimpleDateFormat sdf8 = new SimpleDateFormat("yyyy.MMMMM.dd GGG hh:mm aaa");
String currentDateandTime = databaseDateTimeFormate.format(new Date()); //2009-06-30 08:29:36
String currentDateandTime = databaseDateFormate.format(new Date()); //2009-06-30
String currentDateandTime = sdf1.format(new Date()); //30.06.09
String currentDateandTime = sdf2.format(new Date()); //2009.06.30 AD at 08:29:36 PDT
String currentDateandTime = sdf3.format(new Date()); //Tue, Jun 30, '09
String currentDateandTime = sdf4.format(new Date()); //8:29 PM
String currentDateandTime = sdf5.format(new Date()); //8:29
String currentDateandTime = sdf6.format(new Date()); //8:28:36:249
String currentDateandTime = sdf7.format(new Date()); //8:29 AM,PDT
String currentDateandTime = sdf8.format(new Date()); //2009.June.30 AD 08:29 AM
Datumnotatie Patronen
G Era designator (before christ, after christ)
y Year (e.g. 12 or 2012). Use either yy or yyyy.
M Month in year. Number of M's determine length of format (e.g. MM, MMM or MMMMM)
d Day in month. Number of d's determine length of format (e.g. d or dd)
h Hour of day, 1-12 (AM / PM) (normally hh)
H Hour of day, 0-23 (normally HH)
m Minute in hour, 0-59 (normally mm)
s Second in minute, 0-59 (normally ss)
S Millisecond in second, 0-999 (normally SSS)
E Day in week (e.g Monday, Tuesday etc.)
D Day in year (1-366)
F Day of week in month (e.g. 1st Thursday of December)
w Week in year (1-53)
W Week in month (0-5)
a AM / PM marker
k Hour in day (1-24, unlike HH's 0-23)
K Hour in day, AM / PM (0-11)
z Time Zone
Antwoord 13
final Calendar c = Calendar.getInstance();
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
textView.setText(""+mDay+"-"+mMonth+"-"+mYear);
Antwoord 14
Dit is een methode die handig is om datum en tijd te krijgen:
private String getDate(){
DateFormat dfDate = new SimpleDateFormat("yyyy/MM/dd");
String date=dfDate.format(Calendar.getInstance().getTime());
DateFormat dfTime = new SimpleDateFormat("HH:mm");
String time = dfTime.format(Calendar.getInstance().getTime());
return date + " " + time;
}
Je kunt deze methode aanroepen en de huidige datum- en tijdwaarden krijgen:
2017/01//09 19:23
Antwoord 15
Gebruik voor de huidige datum en tijd met formaat
In Java
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());
Log.d("Date","DATE : " + strDate)
In Kotlin
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val current = LocalDateTime.now()
val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy. HH:mm:ss")
var myDate: String = current.format(formatter)
Log.d("Date","DATE : " + myDate)
} else {
var date = Date()
val formatter = SimpleDateFormat("MMM dd yyyy HH:mma")
val myDate: String = formatter.format(date)
Log.d("Date","DATE : " + myDate)
}
Datumopmaakpatronen
"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01
Antwoord 16
Als je de huidige datum nodig hebt:
Calendar cc = Calendar.getInstance();
int year = cc.get(Calendar.YEAR);
int month = cc.get(Calendar.MONTH);
int mDay = cc.get(Calendar.DAY_OF_MONTH);
System.out.println("Date", year + ":" + month + ":" + mDay);
Als je de huidige tijd nodig hebt:
int mHour = cc.get(Calendar.HOUR_OF_DAY);
int mMinute = cc.get(Calendar.MINUTE);
System.out.println("time_format" + String.format("%02d:%02d", mHour , mMinute));
Antwoord 17
Time time = new Time();
time.setToNow();
System.out.println("time: " + time.hour+":"+time.minute);
Dit geeft je bijvoorbeeld 12:32.
Vergeet niet om android.text.format.Time te importeren;
Antwoord 18
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println("time => " + dateFormat.format(cal.getTime()));
String time_str = dateFormat.format(cal.getTime());
String[] s = time_str.split(" ");
for (int i = 0; i < s.length; i++) {
System.out.println("date => " + s[i]);
}
int year_sys = Integer.parseInt(s[0].split("/")[0]);
int month_sys = Integer.parseInt(s[0].split("/")[1]);
int day_sys = Integer.parseInt(s[0].split("/")[2]);
int hour_sys = Integer.parseInt(s[1].split(":")[0]);
int min_sys = Integer.parseInt(s[1].split(":")[1]);
System.out.println("year_sys => " + year_sys);
System.out.println("month_sys => " + month_sys);
System.out.println("day_sys => " + day_sys);
System.out.println("hour_sys => " + hour_sys);
System.out.println("min_sys => " + min_sys);
Antwoord 19
Je kunt ook android.os.SystemClock gebruiken.
SystemClock.elapsedRealtime() geeft u bijvoorbeeld nauwkeurigere tijdmetingen wanneer de telefoon slaapt.
Antwoord 20
U kunt eenvoudig de volgende code gebruiken:
DateFormat df = new SimpleDateFormat("HH:mm"); // Format time
String time = df.format(Calendar.getInstance().getTime());
DateFormat df1 = new SimpleDateFormat("yyyy/MM/dd"); // Format date
String date = df1.format(Calendar.getInstance().getTime());
Antwoord 21
Voor een aangepast tijd- en datumformaat:
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ",Locale.ENGLISH);
String cDateTime=dateFormat.format(new Date());
Uitvoer is als onderstaand formaat:
2015-06-18T10:15:56-05:00
Antwoord 22
Date todayDate = new Date();
todayDate.getDay();
todayDate.getHours();
todayDate.getMinutes();
todayDate.getMonth();
todayDate.getTime();
Antwoord 23
Time now = new Time();
now.setToNow();
Probeer dit ook eens voor mij.
Antwoord 24
U kunt de datum verkrijgen door gebruik te maken van:
Time t = new Time(Time.getCurrentTimezone());
t.setToNow();
String date = t.format("%Y/%m/%d");
Dit geeft je een resultaat in een mooie vorm, zoals in dit voorbeeld: “2014/02/09”.
Antwoord 25
Nou, ik had problemen met sommige antwoorden van de API, dus ik fuseer deze code, ik hoop dat het hen van pas komt:
Time t = new Time(Time.getCurrentTimezone());
t.setToNow();
String date1 = t.format("%Y/%m/%d");
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm aa", Locale.ENGLISH);
String var = dateFormat.format(date);
String horafecha = var+ " - " + date1;
tvTime.setText(horafecha);
Uitvoer:
15:25 – 2017/10/03
Antwoord 26
Probeer dit
String mytime = (DateFormat.format("dd-MM-yyyy hh:mm:ss", new java.util.Date()).toString());
Antwoord 27
De onderstaande methode retourneert de huidige datum en tijd in String. Gebruik een andere tijdzone volgens uw werkelijke tijdzone. Ik heb GMT gebruikt
public static String GetToday(){
Date presentTime_Date = Calendar.getInstance().getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
return dateFormat.format(presentTime_Date);
}
Antwoord 28
Je moet de Calender-klasse gebruiken volgens de nieuwe API. Datumklasse is nu beëindigd.
Calendar cal = Calendar.getInstance();
String date = ""+cal.get(Calendar.DATE)+"-"+(cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.YEAR);
String time = ""+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE);
Antwoord 29
Probeer de onderstaande code te gebruiken:
Date date = new Date();
SimpleDateFormat dateFormatWithZone = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",Locale.getDefault());
String currentDate = dateFormatWithZone.format(date);