1. Clasa DateTimeFormatter
Clasa specială DateTimeFormatter
își găsește drum în API-ul Date Time. Scopul său este să le fie cât mai ușor posibil pentru programatori să convertească o dată și o oră în formatul exact pe care îl doresc. Și suntem bucuroși să raportăm că creatorii Java au reușit.
Folosirea lui este foarte ușoară. Mai întâi, trebuie să creați o DateTimeFormatter
clasă și să transmiteți un model care specifică modul în care va afișa data și ora:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Unde dtf
este o DateTimeFormatter
variabilă. este o metodă statică a clasei. Și modelul este un șir care specifică modelul care va fi utilizat pentru afișarea datei și orei.DateTimeFormatter.ofPattern()
DateTimeFormatter
Exemple
Cod | Ieșire de consolă |
---|---|
|
|
În exemplul de mai sus, folosim ofPattern()
metoda pentru a crea un DateTimeFormatter
obiect pe baza modelului. Și în rândul următor, folosim format()
metoda pentru a converti un LocalDateTime
obiect într-un șir. Rezultatul îl vedeți pe ecran.
Puteți trece aproape orice obiect din API-ul Date Time către format()
metodă.
Statica ofPattern()
este, de asemenea, foarte simplă: ia un model ca argument și returnează un DateTimeFormatter
obiect. Cea mai interesantă parte se găsește în model.
2. Model de formatare
Șirul transmis ca model este folosit ca model la afișarea informațiilor. MM este înlocuit cu numărul lunii, dd cu ziua lunii și aa cu numărul anului. Cazul literelor contează.
Tabelul complet pentru aceste modele de timp este următorul:
Scrisoare | Sens |
---|---|
y | An |
M | Lună |
d | Zi |
H | Ore |
m | Minute |
s | secunde |
S | Miimi de secundă |
n | Nanosecunde. |
Nu este deosebit de greu de reținut.
Dar de ce modelul din exemplu include literele repetate MM, dd și yy? Ei bine, aici devine mai interesant.
Ideea generala
Numărul de litere afectează lungimea textului. Cu cât sunt mai multe litere, cu atât textul va fi mai lung.
Dacă litera H este specificată o dată, atunci 9 ore vor fi afișate ca 9, dar dacă litera H este specificată de două ori la rând, atunci 9 ore vor fi afișate ca 09.
Dacă litera y este specificată de 2 ori la rând, atunci anul este scris folosind 2 cifre. Dacă apare de 4 ori la rând, atunci sunt folosite 4 cifre.
Dacă litera M este specificată de 2 ori la rând, atunci se scrie numărul lunii. Dacă de 3 ori la rând, atunci se folosește numele lunii (primele sale 3 litere). Dacă de 4 ori la rând, atunci se folosește numele complet al lunii.
Exemplu:
Cod | Ieșire de consolă |
---|---|
|
|
3. Tabel complet de modele
Masa plină este destul de mare și super interesantă:
Model | Variații ale modelului | Exemplu | Descriere |
---|---|---|---|
y | da, aaaa | 19; 2019 | An |
M/L | L, MM, MMM, MMMM, MMMMM | 1; 01; Ian; Ianuarie; J | Lună |
d | d, dd | 9; 09 | Zi |
H | H, HH | 2; 02 | Ore |
m | m, mm | 3; 03 | Minute |
s | s, ss | 5; 05 | secunde |
S | S, SS, SSS,... | 1; 12; 123 | Miimi de secundă |
n | n | 123456789 | Nanosecunde |
G | G, GGGG, GGGGG | ANUNȚ; Anno Domini; A; | Eră |
Q/q | q, q, qqq, qqq | 3; 03; Q3; al 3-lea trimestru | Sfert |
w | w | 13 | Săptămâna anului |
W | W | 3 | Săptămâna lunii |
E | EEE, EEEE, EEEEE | Luni; Luni; M | Zi a săptămânii |
e/c | e, ee, eee, eeee, eeeee | 1; 01; Luni; Luni; M | Zi a săptămânii |
A | A | P.M | AM sau PM |
h | h | 12 | Ceas de 12 ore. |
V | VV | Europa/Helsinki | Fus orar |
z | z zzzz | EET; Ora standard a Europei de Est | Fus orar |
O | O OOOO | GMT+2; GMT+02:00 | Fus orar |
Apropo, aceasta nu este de fapt o versiune completă. Cea mai completă versiune o găsiți aici .
4. Analiza timpului
Clasa DateTimeFormatter
este, de asemenea, interesantă pentru capacitatea sa de a nu numai converti o dată și oră într-un șir conform unui model dat, ci și de a efectua operația inversă!
Analizarea unui șir este procesul de împărțire a acestuia în simboluri semnificative.
Iată cum arată:
Cod | Ieșire de consolă |
---|---|
|
|
Mai întâi, creăm un DateTimeFormatter
obiect și setăm modelul care este utilizat pentru parsare.
Apoi apelăm metoda LocalDate.parse()
sau LocalTime.parse()
sau LocalDateTime.parse()
și trecem șirul care urmează să fie analizat împreună cu obiectul DateTimeFormatter
, care înțelege cum să parseze textul transmis și ce model ar trebui folosit pentru a face acest lucru.
Un alt exemplu: de data aceasta vom analiza timpul.
Cod | Ieșire de consolă |
---|---|
|
|