1. DateTimeFormatter-klassen
Spesialklassen DateTimeFormatter
finner 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 DateTimeFormatter
klasse og bestå i et mønster som spesifiserer hvordan den vil vise dato og klokkeslett:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Hvor dtf
er en DateTimeFormatter
variabel. 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 DateTimeFormatter
objekt basert på mønsteret. Og i neste linje bruker vi format()
metoden for å konvertere et LocalDateTime
objekt 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 DateTimeFormatter
objekt. 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 DateTimeFormatter
er 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 DateTimeFormatter
objekt 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 DateTimeFormatter
objektet, 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