Ich gebe die moderne Antwort.
java.time und ThreeTenABP
So erhalten Sie das aktuelle Datum:
LocalDate today = LocalDate.now(ZoneId.of("America/Hermosillo"));
Dadurch erhalten Sie ein LocalDate
Objekt, mit dem Sie ein Datum in Ihrem Programm behalten sollten. A LocalDate
ist ein Datum ohne Tageszeit.
Nur wenn Sie das Datum einem Benutzer anzeigen müssen, formatieren Sie es in eine Zeichenfolge, die für das Gebietsschema des Benutzers geeignet ist:
DateTimeFormatter userFormatter
= DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
System.out.println(today.format(userFormatter));
Als ich dieses Snippet heute im US-englischen Gebietsschema ausführte, war die Ausgabe:
13. Juli 2019
Wenn Sie es kürzer möchten, geben Sie an FormatStyle.MEDIUM
oder sogar FormatStyle.SHORT
. DateTimeFormatter.ofLocalizedDate
Verwendet das Standardformatierungsgebietsschema, sodass der Punkt darin besteht, dass eine für dieses Gebietsschema geeignete Ausgabe ausgegeben wird, die für verschiedene Gebietsschemas unterschiedlich ist.
Wenn Ihr Benutzer ganz besondere Anforderungen an das Ausgabeformat hat, verwenden Sie eine Formatmusterzeichenfolge:
DateTimeFormatter userFormatter = DateTimeFormatter.ofPattern(
"d-MMM-u", Locale.forLanguageTag("ar-AE"));
13-يول -2019
Ich verwende und empfehle java.time, die moderne Java-API für Datum und Uhrzeit. DateFormat
, SimpleDateFormat
, Date
Und Calendar
in der Frage und / oder viele der anderen Antworten sind schlecht konzipiert und lange veraltet verwendet. Und mit java.time kann man viel besser arbeiten.
Frage: Kann ich java.time unter Android verwenden?
Ja, java.time funktioniert gut auf älteren und neueren Android-Geräten. Es erfordert nur mindestens Java 6 .
- In Java 8 und höher und auf neueren Android-Geräten (ab API-Level 26) ist die moderne API integriert.
- In Java 6 und 7 erhalten Sie den ThreeTen Backport, den Backport der modernen Klassen (ThreeTen für JSR 310; siehe die Links unten).
- Verwenden Sie auf (älteren) Android die Android-Edition von ThreeTen Backport. Es heißt ThreeTenABP. Und stellen Sie sicher, dass Sie die Datums- und
org.threeten.bp
Zeitklassen mit Unterpaketen importieren.
Links
DateFormat
Klasse in Ordnung war, als diese Frage im Jahr 2011 gestellt wurde, waren diese Klasse und ihre UnterklasseSimpleDateFormat
immer problematisch und sind nun längst veraltet. Ich empfehle, dass Sie sie nicht verwenden und stattdessen in java.time, der modernen Java-API für Datum und Uhrzeit, nachsehen .