1. DateTimeFormatter klasse
Specialklassen DateTimeFormatter
finder vej ind i Date Time API. Dens formål er at gøre det så nemt som muligt for programmører at konvertere en dato og tid til det nøjagtige format, som de ønsker. Og vi er glade for at kunne rapportere, at Javas skabere lykkedes.
Det er meget nemt at bruge det. Først skal du oprette en DateTimeFormatter
klasse og bestå i et mønster, der specificerer, hvordan det vil vise dato og klokkeslæt:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Hvor dtf
er en DateTimeFormatter
variabel. er en statisk metode i klassen. Og mønster er en streng, der angiver det mønster, der skal bruges til at vise dato og klokkeslæt.DateTimeFormatter.ofPattern()
DateTimeFormatter
Eksempler
Kode | Konsoludgang |
---|---|
|
|
I eksemplet ovenfor bruger vi ofPattern()
metoden til at skabe et DateTimeFormatter
objekt baseret på mønsteret. Og i næste linje bruger vi format()
metoden til at konvertere et LocalDateTime
objekt til en streng. Du ser resultatet på skærmen.
Du kan overføre næsten ethvert objekt fra Date Time API til format()
metoden.
Det statiske ofPattern()
er også meget simpelt: det tager et mønster som argument og returnerer et DateTimeFormatter
objekt. Den mest interessante del findes i mønsteret.
2. Formateringsmønster
Den streng, der sendes ind som et mønster, bruges som et mønster ved visning af information. MM erstattes af månedens nummer, dd af månedens dag og åå med årets nummer. Bogstavernes sag har betydning.
Den fulde tabel for disse tidsmønstre er denne:
Brev | Betyder |
---|---|
y | År |
M | Måned |
d | Dag |
H | Timer |
m | Referater |
s | Sekunder |
S | Tusindedele af et sekund |
n | Nanosekunder. |
Ikke specielt svært at huske.
Men hvorfor indeholder mønsteret i eksemplet gentagne bogstaver MM, dd og åå? Nå, det er her, det bliver mere interessant.
Generel idé
Antallet af bogstaver påvirker længden af teksten. Jo flere bogstaver der er, jo længere bliver teksten.
Hvis bogstavet H er angivet én gang, vil 9 timer blive vist som 9, men hvis bogstavet H er angivet to gange i træk, vil 9 timer blive vist som 09.
Hvis bogstavet y er angivet 2 gange i træk, skrives året med 2 cifre. Hvis det forekommer 4 gange i træk, så bruges 4 cifre.
Hvis bogstavet M er angivet 2 gange i træk, skrives månedens nummer. Hvis 3 gange i træk, bruges månedens navn (dets første 3 bogstaver). Hvis 4 gange i træk, så bruges månedens fulde navn.
Eksempel:
Kode | Konsoludgang |
---|---|
|
|
3. Komplet tabel over mønstre
Det fulde bord er ret stort og super interessant:
Mønster | Variationer af mønsteret | Eksempel | Beskrivelse |
---|---|---|---|
y | åå, åååå | 19; 2019 | År |
M/L | M, MM, MMM, MMMM, MMMMM | 1; 01; Jan; Januar; J | Måned |
d | d, dd | 9; 09 | Dag |
H | H, HH | 2; 02 | Timer |
m | m, mm | 3; 03 | Referater |
s | s, ss | 5; 05 | Sekunder |
S | S, SS, SSS, ... | 1; 12; 123 | Tusindedele af et sekund |
n | n | 123456789 | Nanosekunder |
G | G, GGGG, GGGGG | AD; Anno Domini; EN; | Æra |
Q/q | q, qq, qqq, qqqq | 3; 03; Q3; 3. kvartal | Kvarter |
w | w | 13 | Årets uge |
W | W | 3 | Uge i måneden |
E | EJ, EEEE, EEEEE | man; Mandag; M | Dag i ugen |
e/c | e, ee, eee, eeee, eeeee | 1; 01; man; Mandag; M | Dag i ugen |
-en | -en | OM EFTERMIDDAGEN | Am eller PM |
h | h | 12 | 12-timers ur. |
V | VV | Europa/Helsinki | Tidszone |
z | z zzzz | EET; Østeuropæisk standardtid | Tidszone |
O | O OOOO | GMT+2; GMT+02:00 | Tidszone |
Forresten, dette er faktisk ikke en komplet version. Du kan finde den mest komplette version her .
4. Parsing tid
Klassen DateTimeFormatter
er også interessant for dens evne til ikke kun at konvertere en dato og et klokkeslæt til en streng i henhold til et givet mønster, men også til at udføre den omvendte operation!
Parsing af en streng er processen med at opdele den i meningsfulde tokens.
Sådan ser det ud:
Kode | Konsoludgang |
---|---|
|
|
Først opretter vi et DateTimeFormatter
objekt og sætter det mønster, der bruges til at analysere.
Derefter kalder vi LocalDate.parse()
eller LocalTime.parse()
eller LocalDateTime.parse()
metoden og sender strengen, der skal parses sammen med DateTimeFormatter
objektet, som forstår, hvordan man analyserer den beståede tekst, og hvilket mønster der skal bruges til at gøre det.
Et andet eksempel: denne gang analyserer vi tid.
Kode | Konsoludgang |
---|---|
|
|