1. DateTimeFormatter klasse
Specialklassen DateTimeFormatterfinder 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 DateTimeFormatterklasse og bestå i et mønster, der specificerer, hvordan det vil vise dato og klokkeslæt:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Hvor dtfer en DateTimeFormattervariabel. 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 DateTimeFormatterobjekt baseret på mønsteret. Og i næste linje bruger vi format()metoden til at konvertere et LocalDateTimeobjekt 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 DateTimeFormatterobjekt. 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 DateTimeFormatterer 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 DateTimeFormatterobjekt 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 DateTimeFormatterobjektet, 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 |
|---|---|
|
|
GO TO FULL VERSION