1. DateTimeFormatter-Klasse

Die spezielle DateTimeFormatterKlasse findet Eingang in die Date Time API. Sein Zweck besteht darin, es Programmierern so einfach wie möglich zu machen, ein Datum und eine Uhrzeit genau in das gewünschte Format zu konvertieren. Und wir freuen uns, Ihnen mitteilen zu können, dass es den Entwicklern von Java gelungen ist.

Die Verwendung ist sehr einfach. Zuerst müssen Sie eine Klasse erstellen DateTimeFormatterund ein Muster übergeben, das angibt, wie Datum und Uhrzeit angezeigt werden:

DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);

Wo dtfist eine DateTimeFormatterVariable? ist eine statische Methode der Klasse. Und „Muster“ ist eine Zeichenfolge, die das Muster angibt, das zur Anzeige von Datum und Uhrzeit verwendet wird.DateTimeFormatter.ofPattern()DateTimeFormatter

Beispiele

Code Konsolenausgabe
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MM-dd-yy");
String text = dtf.format( LocalDateTime.now() );
System.out.println(text);


02-22-19

Im obigen Beispiel verwenden wir die ofPattern()Methode, um ein DateTimeFormatterObjekt basierend auf dem Muster zu erstellen. Und in der nächsten Zeile verwenden wir die format()Methode, um ein Objekt in einen String umzuwandeln LocalDateTime. Das Ergebnis sehen Sie auf dem Bildschirm.

Sie können fast jedes Objekt von der Date Time API an die format()Methode übergeben.

Auch die Statik ofPattern()ist sehr einfach: Sie nimmt ein Muster als Argument und gibt ein DateTimeFormatterObjekt zurück. Der interessanteste Teil ist im Muster zu finden.


2. Formatierungsmuster

Die als Muster übergebene Zeichenfolge wird bei der Anzeige von Informationen als Muster verwendet. MM wird durch die Zahl des Monats, dd durch den Tag des Monats und yy durch die Zahl des Jahres ersetzt. Auf die Groß-/Kleinschreibung der Buchstaben kommt es an.

Die vollständige Tabelle für diese Zeitmuster lautet wie folgt:

Brief Bedeutung
j Jahr
M Monat
D Tag
H Std
M Protokoll
S Sekunden
S Tausendstelsekunden
N Nanosekunden.

Nicht besonders schwer zu merken.

Aber warum enthält das Muster im Beispiel die wiederholten Buchstaben MM, dd und yy? Nun, hier wird es interessanter.

Grund Idee

Die Anzahl der Buchstaben beeinflusst die Länge des Textes. Je mehr Buchstaben vorhanden sind, desto länger wird der Text.

Wenn der Buchstabe H einmal angegeben wird, werden 9 Stunden als 9 angezeigt. Wenn der Buchstabe H jedoch zweimal hintereinander angegeben wird, werden 9 Stunden als 09 angezeigt.

Wenn der Buchstabe y zweimal hintereinander angegeben wird, wird die Jahreszahl zweistellig geschrieben. Wenn es 4 Mal hintereinander vorkommt, werden 4 Ziffern verwendet.

Wird der Buchstabe M 2x hintereinander angegeben, so wird die Zahl des Monats geschrieben. Wenn dreimal hintereinander, wird der Name des Monats (seine ersten drei Buchstaben) verwendet. Bei 4-mal hintereinander wird der vollständige Name des Monats verwendet.

Beispiel:

Code Konsolenausgabe
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM-dd-yyyy");
String text = dtf.format( LocalDateTime.now() );
System.out.println(text);


February-22-2019


3. Vollständige Mustertabelle

Die vollständige Tabelle ist ziemlich umfangreich und super interessant:

Muster Variationen des Musters Beispiel Beschreibung
j jj, jjjj 19; 2019 Jahr
M/L M, MM, MMM, MMMM, MMMMM 1; 01; Jan; Januar; J Monat
D d, dd 9; 09 Tag
H H, HH 2; 02 Std
M m, mm 3; 03 Protokoll
S s, ss 5; 05 Sekunden
S S, SS, SSS, ... 1; 12; 123 Tausendstelsekunden
N N 123456789 Nanosekunden
G G, GGGGG, GGGGG ANZEIGE; Anno Domini; A; Epoche
F/q q, qq, qqq, qqqq 3; 03; Q3; 3. Viertel Quartal
w w 13 Woche des Jahres
W W 3 Woche des Monats
E EEE, EEEEE, EEEEE Mo; Montag; M Wochentag
e/c e, ee, eee, eeee, eeeee 1; 01; Mo; Montag; M Wochentag
A A PN Vormittags oder nachmittags
H H 12 12-Stunden-Uhr.
V VV Europa/Helsinki Zeitzone
z zzzzz OSTEUROPÄISCHE ZEIT, ELEKTRONISCHER ENERGIETRANSFER, VORAUSSICHTLICHE FLUGDAUER; Osteuropäische Standardzeit Zeitzone
Ö O OOOO GMT+2; GMT+02:00 Zeitzone

Übrigens ist dies keine vollständige Version. Die vollständigste Version finden Sie hier .



4. Parsing-Zeit

Interessant ist die DateTimeFormatterKlasse auch wegen ihrer Fähigkeit, nicht nur ein Datum und eine Uhrzeit nach einem vorgegebenen Muster in einen String umzuwandeln, sondern auch den umgekehrten Vorgang durchzuführen!

Beim Parsen einer Zeichenfolge wird sie in sinnvolle Token aufgeteilt.

So sieht es aus:

Code Konsolenausgabe
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMMM-dd-yyyy");
LocalDate date = LocalDate.parse("February-23-2019", dtf);
System.out.println(date);


February-23-2019

Zuerst erstellen wir ein DateTimeFormatterObjekt und legen das Muster fest, das zum Parsen verwendet wird.

Dann rufen wir die Methode LocalDate.parse()or LocalTime.parse()oder LocalDateTime.parse()auf und übergeben die zu analysierende Zeichenfolge zusammen mit dem DateTimeFormatterObjekt, das versteht, wie der übergebene Text analysiert werden soll und welches Muster dafür verwendet werden soll.

Ein weiteres Beispiel: Dieses Mal analysieren wir die Zeit.

Code Konsolenausgabe
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime time = LocalTime.parse("23:59:59", dtf);
System.out.println(time);


23:59:59