Wie kann ich die aktuelle Uhrzeit und das Datum in einer Android-App abrufen?
Antworten
Zu viele Anzeigen?Sie können es verwenden:
import java.util.Calendar
Date currentTime = Calendar.getInstance().getTime();
Im Kalender gibt es viele Konstanten für alles, was Sie brauchen.
Prüfen Sie die Dokumentation der Klasse Kalender .
Sie können ( sollte aber nicht mehr - siehe unten!) verwenden Android.text.format.Zeit :
Time now = new Time();
now.setToNow();
Aus der oben verlinkten Referenz:
T für die Klassen java.util.Calendar und java.util.GregorianCalendar-Klassen. Eine Instanz der Klasse Time repräsentiert einen Moment in der Zeit, angegeben mit Sekundengenauigkeit.
ANMERKUNG 1: Es ist schon einige Jahre her, dass ich diese Antwort geschrieben habe, und es geht um eine alte, Android-spezifische und jetzt veraltete Klasse. Google jetzt sagt das "[d]iese Klasse hat eine Reihe von Problemen und es wird empfohlen, dass GregorianCalendar verwendet wird".
ANMERKUNG 2: Auch wenn die Time
Klasse hat eine toMillis(ignoreDaylightSavings)
Methode ist dies lediglich ein Hilfsmittel zur Übergabe an Methoden, die Zeit in Millisekunden erwarten. Der Zeitwert ist nur auf eine Sekunde genau der Millisekundenanteil ist immer 000
. Wenn Sie in einer Schleife Folgendes tun
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 ...
Die resultierende Sequenz wiederholt denselben Wert, z. B. 1410543204000
bis zum Beginn der nächsten Sekunde, in der 1410543205000
beginnt sich zu wiederholen.
Wenn Sie das Datum und die Uhrzeit nach einem bestimmten Muster abrufen möchten, können Sie Folgendes verwenden:
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
String currentDateandTime = sdf.format(new Date());
Oder,
Datum :
String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());
Zeit:
String currentTime = new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
F
DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, HH:mm");
String date = df.format(Calendar.getInstance().getTime());
W
"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
Eigentlich ist es sicherer, die aktuelle Zeitzone, die auf dem Gerät eingestellt ist, mit Time.getCurrentTimezone()
, sonst erhalten Sie die aktuelle Zeit in UTC.
Time today = new Time(Time.getCurrentTimezone());
today.setToNow();
Dann können Sie alle gewünschten Datumsfelder abrufen, wie z. B.:
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
Siehe Android.text.format.Zeit Klasse für alle Details.
UPDATE
Wie viele Menschen darauf hinweisen, sagt Google, dass diese Klasse eine Reihe von Problemen hat und nicht mehr verwendet werden soll:
T GregorianCalendar stattdessen zu verwenden.
Bekannte Probleme:
F Arithmetik derzeit mit 32-Bit-Ganzzahlen durchgeführt. Dies begrenzt den zuverlässig darstellbaren Zeitbereich von 1902 bis 2037. wikipedia-Artikel zum Jahr 2038-Problem für weitere Einzelheiten. Verlassen Sie sich nicht auf dieses Verhalten; es kann sich in Zukunft ändern. Aufruf von switchTimezone(String) für ein Datum, das nicht existieren kann, wie z.B. eine Wand Zeit, die aufgrund einer Sommerzeitumstellung übersprungen wurde, führt zu einem Datum im Jahr 1969 (d.h. -1, oder 1 Sekunde vor dem 1. Januar 1970 UTC). Ein Großteil der Formatierung/Parsing geht von ASCII-Text aus und ist daher nicht geeignet für die Verwendung mit Nicht-ASCII-Skripten.
- See previous answers
- Weitere Antworten anzeigen