1. DateTimeFormatter-klasse
De speciale DateTimeFormatter
klasse vond zijn weg naar de Date Time API. Het doel is om het voor programmeurs zo gemakkelijk mogelijk te maken om een datum en tijd om te zetten in het exacte formaat dat ze willen. En we zijn blij te kunnen melden dat de makers van Java daarin zijn geslaagd.
Het gebruik ervan is heel eenvoudig. Eerst moet u een klasse maken DateTimeFormatter
en een patroon doorgeven dat aangeeft hoe de datum en tijd worden weergegeven:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
Waar dtf
is een DateTimeFormatter
variabele. is een statische methode van de klasse. En patroon is een tekenreeks die het patroon specificeert dat zal worden gebruikt om de datum en tijd weer te geven.DateTimeFormatter.ofPattern()
DateTimeFormatter
Voorbeelden
Code | Console-uitvoer |
---|---|
|
|
In het bovenstaande voorbeeld gebruiken we de ofPattern()
methode om een DateTimeFormatter
object te maken op basis van het patroon. En in de volgende regel gebruiken we de format()
methode om een LocalDateTime
object om te zetten in een string. Je ziet het resultaat op het scherm.
U kunt bijna elk object van de Date Time API doorgeven aan de format()
methode.
De static ofPattern()
is ook heel eenvoudig: het neemt een patroon als argument en retourneert een DateTimeFormatter
object. Het meest interessante deel is te vinden in het patroon.
2. Opmaakpatroon
De tekenreeks die als patroon wordt doorgegeven, wordt gebruikt als patroon bij het weergeven van informatie. MM wordt vervangen door het nummer van de maand, dd door de dag van de maand en yy door het nummer van het jaar. De casus van de brieven is van belang.
De volledige tabel voor deze tijdpatronen is als volgt:
Brief | Betekenis |
---|---|
j | Jaar |
M | Maand |
D | Dag |
H | Uur |
M | Minuten |
S | seconden |
S | Duizenden van een seconde |
N | Nanoseconden. |
Niet bijzonder moeilijk te onthouden.
Maar waarom bevat het patroon in het voorbeeld herhaalde letters MM, dd en jj? Nou, hier wordt het interessanter.
Algemeen idee
Het aantal letters beïnvloedt de lengte van de tekst. Hoe meer letters er zijn, hoe langer de tekst zal zijn.
Als de letter H één keer wordt opgegeven, wordt 9 uur weergegeven als 9, maar als de letter H twee keer achter elkaar wordt opgegeven, wordt 9 uur weergegeven als 09.
Als de letter y 2 keer achter elkaar wordt opgegeven, wordt het jaar geschreven met 2 cijfers. Als het 4 keer achter elkaar voorkomt, worden er 4 cijfers gebruikt.
Als de letter M 2 keer achter elkaar wordt opgegeven, wordt het nummer van de maand geschreven. Als het 3 keer achter elkaar is, wordt de naam van de maand (de eerste 3 letters) gebruikt. Indien 4 keer achter elkaar, dan wordt de volledige naam van de maand gebruikt.
Voorbeeld:
Code | Console-uitvoer |
---|---|
|
|
3. Volledige tabel met patronen
De volledige tafel is vrij groot en super interessant:
Patroon | Variaties van het patroon | Voorbeeld | Beschrijving |
---|---|---|---|
j | jj, jjjj | 19; 2019 | Jaar |
M/L | M, MM, MMM, MMMM, MMMMM | 1; 01; jan; Januari; J | Maand |
D | d, dd | 9; 09 | Dag |
H | H, HH | 2; 02 | Uur |
M | m, mm | 3; 03 | Minuten |
S | s, ss | 5; 05 | seconden |
S | S, SS, SSS, ... | 1; 12; 123 | Duizenden van een seconde |
N | N | 123456789 | Nanoseconden |
G | G, GGGG, GGGG | ADVERTENTIE; Anno Domini; A; | Tijdperk |
Vraag/q | q, qq, qqq, qqqq | 3; 03; Q3; 3e kwartaal | Kwartaal |
w | w | 13 | Week van het jaar |
W | W | 3 | Week van de maand |
E | EEEE, EEEE, EEEEEE | ma; Maandag; M | Dag van de week |
e/c | e, ee, eee, eee, eee | 1; 01; ma; Maandag; M | Dag van de week |
A | A | P.M | AM of PM |
H | H | 12 | 12-uurs klok. |
V | VV | Europa/Helsinki | Tijdzone |
z | z zzzzz | EET; Oost-Europese standaardtijd | Tijdzone |
O | O OOOO | GMT+2; GMT+02:00 | Tijdzone |
Overigens is dit niet echt een volledige versie. De meest complete versie vind je hier .
4. Parseertijd
De DateTimeFormatter
klasse is ook interessant vanwege de mogelijkheid om niet alleen een datum en tijd om te zetten in een string volgens een bepaald patroon, maar ook om de omgekeerde bewerking uit te voeren!
Het ontleden van een tekenreeks is het splitsen ervan in betekenisvolle tokens.
Hier is hoe het eruit ziet:
Code | Console-uitvoer |
---|---|
|
|
Eerst maken we een DateTimeFormatter
object en stellen we het patroon in dat wordt gebruikt voor het parseren.
Vervolgens noemen we de LocalDate.parse()
of LocalTime.parse()
of LocalDateTime.parse()
methode en geven we de string door die moet worden geparseerd samen met het DateTimeFormatter
object, dat begrijpt hoe de doorgegeven tekst moet worden geparseerd en welk patroon daarvoor moet worden gebruikt.
Nog een voorbeeld: deze keer ontleden we de tijd.
Code | Console-uitvoer |
---|---|
|
|