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 |
|---|---|
|
|
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 |
|---|---|
|
|
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 |
|---|---|
|
|
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 |
|---|---|
|
|
GO TO FULL VERSION