1. Klassen DateTimeFormatter
Specialklassen DateTimeFormatter
letar sig in i Date Time API. Syftet är att göra det så enkelt som möjligt för programmerare att konvertera ett datum och en tid till det exakta format de vill ha. Och vi är glada att kunna rapportera att Javas skapare lyckades.
Att använda det är väldigt enkelt. Först måste du skapa en DateTimeFormatter
klass och godkänna ett mönster som anger hur datum och tid ska visas:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Var dtf
finns en DateTimeFormatter
variabel. är en statisk metod för klassen. Och mönster är en sträng som anger mönstret som kommer att användas för att visa datum och tid.DateTimeFormatter.ofPattern()
DateTimeFormatter
Exempel
Koda | Konsolutgång |
---|---|
|
|
I exemplet ovan använder vi ofPattern()
metoden för att skapa ett DateTimeFormatter
objekt baserat på mönstret. Och på nästa rad använder vi format()
metoden för att konvertera ett LocalDateTime
objekt till en sträng. Du ser resultatet på skärmen.
Du kan skicka nästan alla objekt från Date Time API till format()
metoden.
Det statiska ofPattern()
är också väldigt enkelt: det tar ett mönster som ett argument och returnerar ett DateTimeFormatter
objekt. Den mest intressanta delen finns i mönstret.
2. Formateringsmönster
Strängen som skickas in som ett mönster används som ett mönster när information visas. MM ersätts med månadens nummer, dd med månadens dag och åå med årets nummer. Bokstävernas fall spelar roll.
Den fullständiga tabellen för dessa tidsmönster är följande:
Brev | Menande |
---|---|
y | År |
M | Månad |
d | Dag |
H | Timmar |
m | Minuter |
s | Sekunder |
S | Tusentals sekund |
n | Nanosekunder. |
Inte särskilt svårt att komma ihåg.
Men varför innehåller mönstret i exemplet upprepade bokstäver MM, dd och åå? Tja, det är här det blir mer intressant.
Allmän uppfattning
Antalet bokstäver påverkar textens längd. Ju fler bokstäver det finns, desto längre blir texten.
Om bokstaven H anges en gång, kommer 9 timmar att visas som 9, men om bokstaven H anges två gånger i rad, kommer 9 timmar att visas som 09.
Om bokstaven y anges 2 gånger i rad, skrivs året med 2 siffror. Om det förekommer 4 gånger i rad används 4 siffror.
Om bokstaven M anges 2 gånger i rad, skrivs månadens nummer. Om 3 gånger i rad används månadens namn (dess första 3 bokstäver). Om 4 gånger i rad används månadens fullständiga namn.
Exempel:
Koda | Konsolutgång |
---|---|
|
|
3. Komplett tabell över mönster
Hela bordet är ganska stort och superintressant:
Mönster | Variationer av mönstret | Exempel | Beskrivning |
---|---|---|---|
y | åååååååååå | 19; 2019 | År |
M/L | M, MM, MMM, MMMM, MMMMM | 1; 01; Jan; januari; J | Månad |
d | d, dd | 9; 09 | Dag |
H | H, HH | 2; 02 | Timmar |
m | m, mm | 3; 03 | Minuter |
s | s, ss | 5; 05 | Sekunder |
S | S, SS, SSS, ... | 1; 12; 123 | Tusentals sekund |
n | n | 123456789 | Nanosekunder |
G | G, GGGG, GGGGG | AD; Anno Domini; A; | Epok |
Q/q | q, qq, qqq, qqqq | 3; 03; Q3; 3:e kvartalet | Fjärdedel |
w | w | 13 | Årets vecka |
W | W | 3 | Månadens vecka |
E | EEE, EEEE, EEEEE | mån; måndag; M | Veckodag |
e/c | e, ee, eee, eeee, eeeee | 1; 01; mån; måndag; M | Veckodag |
a | a | PM | Förmiddag eller eftermiddag |
h | h | 12 | 12-timmars klocka. |
V | VV | Europa/Helsingfors | Tidszon |
z | z zzzz | EET; Östeuropeisk standardtid | Tidszon |
O | O OOOO | GMT+2; GMT+02:00 | Tidszon |
Förresten, det här är faktiskt inte en komplett version. Du hittar den mest kompletta versionen här .
4. Parsingtid
Klassen DateTimeFormatter
är också intressant för sin förmåga att inte bara konvertera ett datum och en tid till en sträng enligt ett givet mönster, utan också att utföra den omvända operationen!
Att analysera en sträng är processen att dela upp den i meningsfulla tokens.
Så här ser det ut:
Koda | Konsolutgång |
---|---|
|
|
Först skapar vi ett DateTimeFormatter
objekt och ställer in mönstret som används för att analysera.
Sedan anropar vi metoden LocalDate.parse()
eller LocalTime.parse()
eller LocalDateTime.parse()
och skickar in strängen som ska tolkas tillsammans med DateTimeFormatter
objektet, som förstår hur man tolkar den skickade texten och vilket mönster som ska användas för att göra det.
Ett annat exempel: den här gången analyserar vi tid.
Koda | Konsolutgång |
---|---|
|
|
GO TO FULL VERSION