1. DateTimeFormatter-klassen
Spesialklassen DateTimeFormatterfinner veien inn i Date Time API. Hensikten er å gjøre det så enkelt som mulig for programmerere å konvertere en dato og tid til det nøyaktige formatet de ønsker. Og vi er glade for å kunne rapportere at Javas skapere lyktes.
Å bruke det er veldig enkelt. Først må du opprette en DateTimeFormatterklasse og bestå i et mønster som spesifiserer hvordan den vil vise dato og klokkeslett:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Hvor dtfer en DateTimeFormattervariabel. er en statisk metode for klassen. Og mønster er en streng som spesifiserer mønsteret som skal brukes til å vise dato og klokkeslett.DateTimeFormatter.ofPattern()DateTimeFormatter
Eksempler
| Kode | Konsollutgang |
|---|---|
|
|
I eksemplet ovenfor bruker vi ofPattern()metoden for å lage et DateTimeFormatterobjekt basert på mønsteret. Og i neste linje bruker vi format()metoden for å konvertere et LocalDateTimeobjekt til en streng. Du ser resultatet på skjermen.
Du kan overføre nesten alle objekter fra Date Time API til metoden format().
Det statiske ofPattern()er også veldig enkelt: det tar et mønster som argument og returnerer et DateTimeFormatterobjekt. Den mest interessante delen finner du i mønsteret.
2. Formateringsmønster
Strengen som sendes inn som et mønster, brukes som et mønster ved visning av informasjon. MM erstattes med månedens nummer, dd med dagen i måneden og åå med årstallet. Bokstavenes sak har betydning.
Den fullstendige tabellen for disse tidsmønstrene er denne:
| Brev | Betydning |
|---|---|
| y | År |
| M | Måned |
| d | Dag |
| H | Timer |
| m | Minutter |
| s | Sekunder |
| S | Tusendeler av et sekund |
| n | Nanosekunder. |
Ikke spesielt vanskelig å huske.
Men hvorfor inkluderer mønsteret i eksemplet gjentatte bokstaver MM, dd og åå? Vel, det er her det blir mer interessant.
Generell idé
Antall bokstaver påvirker lengden på teksten. Jo flere bokstaver det er, jo lengre blir teksten.
Hvis bokstaven H angis én gang, vil 9 timer vises som 9, men hvis bokstaven H angis to ganger på rad, vil 9 timer vises som 09.
Hvis bokstaven y er spesifisert 2 ganger på rad, skrives året med 2 sifre. Hvis det forekommer 4 ganger på rad, brukes 4 siffer.
Hvis bokstaven M er spesifisert 2 ganger på rad, skrives månedens nummer. Hvis 3 ganger på rad, brukes månedens navn (de tre første bokstavene). Hvis 4 ganger på rad, brukes månedens fulle navn.
Eksempel:
| Kode | Konsollutgang |
|---|---|
|
|
3. Komplett tabell over mønstre
Hele bordet er ganske stort og superinteressant:
| Mønster | Variasjoner av 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 | Minutter |
| s | s, ss | 5; 05 | Sekunder |
| S | S, SS, SSS, ... | 1; 12; 123 | Tusendeler av et sekund |
| n | n | 123456789 | Nanosekunder |
| G | G, GGGG, GGGGG | AD; Kristi fødsel; EN; | Era |
| Q/q | q, qq, qqq, qqqq | 3; 03; Q3; 3. kvartal | Fjerdedel |
| w | w | 1. 3 | Årets uke |
| W | W | 3 | Uken i måneden |
| E | EEE, EEEE, EEEEE | man; Mandag; M | Ukedag |
| e/c | e, ee, eee, eeee, eeeee | 1; 01; man; Mandag; M | Ukedag |
| en | en | PM | Morgen eller kveld |
| h | h | 12 | 12-timers klokke. |
| V | VV | Europa/Helsingfors | Tidssone |
| z | z zzzz | EET; Østeuropeisk standardtid | Tidssone |
| O | Å ÅÅÅ | GMT+2; GMT+02:00 | Tidssone |
Forresten, dette er faktisk ikke en komplett versjon. Du finner den mest komplette versjonen her .
4. Parsetid
Klassen DateTimeFormatterer også interessant for sin evne til ikke bare å konvertere en dato og et klokkeslett til en streng i henhold til et gitt mønster, men også å utføre omvendt operasjon!
Å analysere en streng er prosessen med å dele den opp i meningsfulle tokens.
Slik ser det ut:
| Kode | Konsollutgang |
|---|---|
|
|
Først lager vi et DateTimeFormatterobjekt og setter mønsteret som brukes til å analysere.
Deretter kaller vi LocalDate.parse()eller LocalTime.parse()eller- LocalDateTime.parse()metoden og sender inn strengen som skal analyseres sammen med DateTimeFormatterobjektet, som forstår hvordan man analyserer den beståtte teksten og hvilket mønster som skal brukes for å gjøre det.
Et annet eksempel: denne gangen analyserer vi tid.
| Kode | Konsollutgang |
|---|---|
|
|
GO TO FULL VERSION