1300 Stimmen

Wie man die aktuelle Zeit und das Datum in Android abruft

Wie kann ich die aktuelle Uhrzeit und das Datum in einer Android-App abrufen?

1518voto

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 .

500voto

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.

448voto

Miciurash Punkte 4874

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());

256voto

ANemati Punkte 4696

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

129voto

kaneda Punkte 5781

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X