1. DateTimeFormatter osztály
A speciális DateTimeFormatterosztály megtalálta az utat a Date Time API-ban. Célja, hogy a programozók a lehető legkönnyebben konvertálhassák a dátumot és az időt a kívánt formátumra. Örömmel jelentjük, hogy a Java alkotóinak sikerült.
Használata nagyon egyszerű. Először is létre kell hoznia egy DateTimeFormatterosztályt, és át kell adnia egy mintát, amely meghatározza, hogyan jelenítse meg a dátumot és az időt:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Hol dtfvan egy DateTimeFormatterváltozó. az osztály statikus metódusa . A minta pedig egy karakterlánc, amely meghatározza a dátum és az idő megjelenítéséhez használt mintát.DateTimeFormatter.ofPattern()DateTimeFormatter
Példák
| Kód | Konzol kimenet |
|---|---|
|
|
A fenti példában a módszert használjuk objektumok ofPattern()létrehozására DateTimeFormattera minta alapján. A következő sorban pedig a format()metódus segítségével alakítunk át egy LocalDateTimeobjektumot stringgé. Az eredményt a képernyőn látja.
A Date Time API-ból szinte bármilyen objektumot átadhat a metódusnak format().
A statika ofPattern()is nagyon egyszerű: egy mintát vesz fel argumentumként, és egy DateTimeFormatterobjektumot ad vissza. A legérdekesebb rész a mintában található.
2. Formázási minta
A mintaként átadott karakterláncot mintaként használják az információk megjelenítésekor. MM helyébe a hónap száma, dd a hónap napja, yy helyébe az év száma lép. A betűk nagybetűje számít.
Ezeknek az időmintáknak a teljes táblázata a következő:
| Levél | Jelentése |
|---|---|
| y | Év |
| M | Hónap |
| d | Nap |
| H | Órák |
| m | Percek |
| s | Másodpercek |
| S | Ezredmásodperc |
| n | Nanoszekundum. |
Nem különösebben nehéz megjegyezni.
De miért tartalmaz a példa mintája ismétlődő MM, dd és yy betűket? Nos, itt kezd érdekesebb lenni.
Alapgondolat
A betűk száma befolyásolja a szöveg hosszát. Minél több betű van, annál hosszabb lesz a szöveg.
Ha a H betűt egyszer adjuk meg, akkor a 9 óra 9-ként jelenik meg, de ha a H betűt kétszer adjuk meg egymás után, akkor a 9 óra 09-ként jelenik meg.
Ha az y betűt 2-szer egymás után adjuk meg, akkor az évet 2 számjeggyel írjuk. Ha egymás után 4-szer fordul elő, akkor 4 számjegyet kell használni.
Ha az M betűt kétszer egymás után adjuk meg, akkor a hónap száma kerül kiírásra. Ha 3-szor egymás után, akkor a hónap neve (az első 3 betűje) kerül felhasználásra. Ha 4-szer egymás után, akkor a hónap teljes neve kerül felhasználásra.
Példa:
| Kód | Konzol kimenet |
|---|---|
|
|
3. A minták teljes táblázata
A teljes táblázat meglehetősen nagy és rendkívül érdekes:
| Minta | A minta variációi | Példa | Leírás |
|---|---|---|---|
| y | éééééé | 19; 2019 | Év |
| M/L | M, MM, MMM, MMMM, MMMMM | 1; 01; Jan; Január; J | Hónap |
| d | d, dd | 9; 09 | Nap |
| H | H, HH | 2; 02 | Órák |
| m | m, mm | 3; 03 | Percek |
| s | s, ss | 5; 05 | Másodpercek |
| S | S, SS, SSS, ... | 1; 12; 123 | Ezredmásodperc |
| n | n | 123456789 | Nanoszekundum |
| G | G, GGGG, GGGGG | HIRDETÉS; Időszámítás szerint; A; | Korszak |
| Q/q | q, qq, qqq, qqqq | 3; 03; Q3; 3. negyed | Negyed |
| w | w | 13 | Az év hete |
| W | W | 3 | A hónap hete |
| E | EEE, EEEE, EEEEE | H; Hétfő; M | A hét napja |
| e/c | e, ee, eee, eee, eeeee | 1; 01; H; Hétfő; M | A hét napja |
| a | a | DÉLUTÁN | Délelőtt vagy délután |
| h | h | 12 | 12 órás óra. |
| V | VV | Európa/Helsinki | Időzóna |
| z | z zzzz | EET; Kelet-európai szabványidő | Időzóna |
| O | Ó ÓÓÓ | GMT+2; GMT+02:00 | Időzóna |
Egyébként ez nem egy teljes verzió. A legteljesebb verziót itt találja .
4. Elemzési idő
Az DateTimeFormatterosztály azért is érdekes, mert nem csak egy dátumot és időt tud adott minta szerint sztringgé alakítani, hanem a fordított műveletet is végrehajtja!
Egy karakterlánc elemzése azt a folyamatot jelenti, amely értelmes tokenekre bontja.
Így néz ki:
| Kód | Konzol kimenet |
|---|---|
|
|
Először létrehozunk egy DateTimeFormatterobjektumot, és beállítjuk az elemzéshez használt mintát.
Ezután meghívjuk az LocalDate.parse()or LocalTime.parse()or LocalDateTime.parse()metódust, és átadjuk az elemezni kívánt karakterláncot az objektummal együtt DateTimeFormatter, amely megérti, hogyan kell elemezni az átadott szöveget, és milyen mintát kell használni ehhez.
Egy másik példa: ezúttal az időt elemezzük.
| Kód | Konzol kimenet |
|---|---|
|
|
GO TO FULL VERSION