Wie kann ich ein Jahr, einen Monat, einen Tag, eine Stunde und eine Minute entsprechend dem Datum und der Uhrzeit der Gerätekonfiguration richtig formatieren?
321
Verwenden Sie die Standard-Java-DateFormat-Klasse.
Gehen Sie beispielsweise folgendermaßen vor, um das aktuelle Datum und die aktuelle Uhrzeit anzuzeigen:
Date date = new Date(location.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
Sie können ein Date-Objekt mit Ihren eigenen Werten initialisieren. Beachten Sie jedoch, dass die Konstruktoren veraltet sind und Sie wirklich ein Java-Kalenderobjekt verwenden sollten.
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
Das zurückgegebene DatumFormat ist vom Typjava.text.DateFormat
(und NICHTandroid.text.format.DateFormat
)Meiner Meinung nach
android.text.format.DateFormat.getDateFormat(context)
verwirrt mich das, weil diese Methodejava.text.DateFormat
eher zurückgibt alsandroid.text.format.DateFormat
- - ".Daher verwende ich den folgenden Fragmentcode, um das aktuelle Datum und die aktuelle Uhrzeit in meinem Format abzurufen.
Darüber hinaus können Sie andere Formate verwenden. Folgen Sie DateFormat .
quelle
hh:mm:ss
Sie auch nicht, dass Sie01:00:00
für 1 PM erhalten, müssen Sie verwendenkk:mm:ss
, um13:00:00
k
ist Stunde am Tag (1-24), meinst du nichtH
, das ist Stunde am Tag (0-23), z. HH: mm: ss? Siehe: developer.android.com/reference/java/text/SimpleDateFormat.htmljava.text.SimpleDateFormat
(was Sie verlinkt undH
für Stunden im Bereich von 0-23 verwendet) undandroid.text.format.DateFormat
(was die Antwort ist undk
für Stunden im Bereich von 0-23 verwendet)k
mit der Dokumentation fürDateFormat
eindeutige Zustände . Die kanonische Dokumentation von Formatzeichenfolgen finden Sie unter SimpleDateFormat. Sehr verwirrend. Oder fehlt mir etwas?Sie können verwenden
DateFormat
. Das Ergebnis hängt vom Standardgebietsschema des Telefons ab. Sie können jedoch auch das Gebietsschema angeben:https://developer.android.com/reference/java/text/DateFormat.html
Dies ist Ergebnisse auf einem
FR Gebietsschema: 3. November 2017
US / En Locale: 12. Januar 1952
FR Gebietsschema: 03/11/2017
US / En Gebietsschema: 12.13.52
FR Gebietsschema: 3. November 2017
US / En Locale: 12. Januar 1952
FR Gebietsschema: 3. November 2017
US / En Locale: 12. Januar 1952
FR Gebietsschema: vendredi 3 novembre 2017
US / En Locale: Dienstag, 12. April 1952
FR Gebietsschema: 3. November 2017 16:04:58
FR Gebietsschema: 03/11/2017 16:04
FR Gebietsschema: 03/11/2017 16:04:58
FR Gebietsschema: 03/11/2017 16:04:58 GMT + 01: 00
FR Gebietsschema: 03/11/2017 16:04:58 heure normale d'Europe centrale
FR Gebietsschema: 16:04:58
FR Gebietsschema: 16:04
FR Gebietsschema: 16:04:58
FR Gebietsschema: 16:04:58 GMT + 01: 00
FR Gebietsschema: 16:04:58 heure normale d'Europe centrale
quelle
Datumszeichenfolge von Datum zu Gebietsschema:
Optionen:
-> 31. Dezember 1969
-> 31. Dezember 1969, 16:00:00 Uhr
-> 16:00:00 Uhr
quelle
Dies wird es tun:
quelle
Verwenden Sie SimpleDateFormat
So was:
quelle
new SimpleDateFormat("my-format", Locale.getDefault());
Im Anschluss daran: http://developer.android.com/reference/android/text/format/Time.html
Ist es besser, die native Android-Zeitklasse zu verwenden:
Dann formatieren:
quelle
Verwenden Sie diese beiden als Klassenvariablen:
Und benutze es so:
quelle
Dies ist meine Methode, Sie können das Format definieren und eingeben.
quelle
SimpleDateFormat
Ich verwende SimpleDateFormat ohne benutzerdefiniertes Muster , um das tatsächliche Datum und die Uhrzeit vom System im vorgewählten Format des Geräts abzurufen :
Rückgabe :
quelle
Verwenden Sie die eingebaute Zeitklasse!
quelle
Die anderen Antworten sind im Allgemeinen richtig. Ich möchte die moderne Antwort beitragen. Die Klassen
Date
,DateFormat
undSimpleDateFormat
in den meisten anderen Antworten verwendet werden, sind lange veraltet und haben für viele Programmierer über viele Jahre hinweg verursacht Probleme. Heute haben wir viel mehr injava.time
AKA JSR-310, der modernen Java-API für Datum und Uhrzeit. Kannst du das schon auf Android benutzen? Höchstwahrscheinlich! Die modernen Klassen wurden im ThreeTenABP-Projekt auf Android zurückportiert. Weitere Informationen finden Sie in dieser Frage: Verwendung von ThreeTenABP in Android Project .Mit diesem Snippet können Sie loslegen:
Wenn ich die bevorzugte Sprache meines Computers auf US-Englisch oder UK-Englisch einstelle, wird Folgendes gedruckt:
Wenn ich es stattdessen auf Dänisch setze, bekomme ich:
Es folgt also der Konfiguration. Ich bin mir jedoch nicht sicher, in welchem Detail die Datums- und Uhrzeiteinstellungen Ihres Geräts eingehalten werden. Dies kann von Telefon zu Telefon unterschiedlich sein.
quelle
Dieser Code funktioniert für mich!
quelle
Die Datumsformatklasse arbeitet mit dem Cheat-Code, um das Datum festzulegen. Mögen
Sie können hier mehr Cheats überprüfen .
quelle
Dieser Code würde das aktuelle Datum und die aktuelle Uhrzeit zurückgeben:
quelle
Gebietsschema
Um Datum oder Uhrzeit im Gebietsschema von Millisekunden abzurufen, habe ich Folgendes verwendet:
Datum (und Uhrzeit
Datum
Zeit
Sie können einen anderen Datums- und Zeitstil verwenden. Weitere Infos zu Styles hier .
quelle
Kürzester Weg:
%tR
kurz ist für%tH:%tM
,<
Mittel letzte Parameter wiederzuverwenden (1$
).Es ist äquivalent zu
String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM", Calendar.getInstance())
https://developer.android.com/reference/java/util/Formatter.html
quelle
Versuchen:
Und wenn Sie auf übergebene Variablen zugreifen:
quelle
Ich benutze es so:
quelle
Vermeiden Sie juDate
Java.util.Date und .Calendar sowie SimpleDateFormat in Java (und Android) sind bekanntermaßen problematisch. Vermeide sie. Sie sind so schlecht, dass Sun / Oracle sie aufgegeben hat und sie durch das neue Paket java.time in Java 8 ersetzt hat (ab 2014 nicht in Android). Das Neue
java.time
wurde von der Joda-Time- Bibliothek inspiriert .Joda-Zeit
Joda-Time funktioniert in Android.
Durchsuchen Sie StackOverflow nach "Joda", um viele Beispiele und Diskussionen zu finden.
Ein bisschen Quellcode mit Joda-Time 2.4.
Standardformat.
Lokalisiertes Format.
quelle
Zurück zum Jahr 2016, wenn ich das Format anpassen möchte (nicht entsprechend der Gerätekonfiguration, wie Sie fragen ...), verwende ich normalerweise die String-Ressourcendatei:
in strings.xml:
In Aktivität:
Dies ist auch bei der Veröffentlichung der neuen Datumsbindungsbibliothek hilfreich .
So kann ich so etwas in der Layoutdatei haben:
Und in der Java-Klasse:
quelle
Die Android-Zeitklasse bietet drei Formatierungsmethoden: http://developer.android.com/reference/android/text/format/Time.html
So habe ich es gemacht:
Ich hoffe das ist hilfreich :-)
quelle
Es ist zu spät, aber es kann jemandem helfen
Hier
format
ist das Format, das Sie benötigenBeispiel: "HH: mm" gibt 15:30 zurück
quelle