Datum en tijd omzetten
Het omgaan met datum- en tijdwaarden lijkt op het eerste gezicht misschien eenvoudig, maar wie zich als ontwikkelaar, tester of data-analist ooit met internationale applicaties of backend-logica heeft beziggehouden weet dat de realiteit anders is. De wereld hanteert niet één manier om een datum weer te geven, noch om een tijdstip op te slaan. Afhankelijk van je doelgroep, land, tijdzone of zelfs de software dat je gebruikt, kun je geconfronteerd worden met verschillende patronen, tijdsrepresentaties en technische beperkingen.
Om dit probleem te verlichten kun je onderstaande tool gebruiken waarmee je schakelen tussen Unix-timestamps (in seconden of milliseconden), leesbare datumformaten en zelfs aangepaste weergaves met behulp van een zelf gedefinieerd patroon.
Een van de belangrijkste concepten die deze tool behandelt is de Unix tijdstempel of epoch-tijd. Deze wordt wereldwijd gebruikt om tijdstippen op een gestandaardiseerde en tijdzone-onafhankelijke manier vast te leggen. Een Unix tijdstempel geeft het aantal seconden weer sinds 1 januari 1970 om 00:00:00 UTC. Voor bijvoorbeeld een tijdstempel als 1751796336
betekent dit dat het moment overeenkomt met 6 juli 2025 om 12 uur 6 minuten en 36 second UTC. Omdat veel systemen op millisecondenniveau werken (zoals de Date.now()
van JavaScript), wordt ook de millisecondenvariant (x
) ondersteund.
Waar timestamps efficiënt zijn voor computers, zijn ze voor mensen moeilijk leesbaar. Daarom worden ze vaak omgezet naar een datum- en tijdnotatie, bijvoorbeeld 2025-07-06 14:23:45
. De manier waarop je zo'n datum opschrijft, kan variëren per land, applicatie of standaard. In Nederland schrijven we bijvoorbeeld liever 06-07-2025 14:23
, terwijl in de Verenigde staten eerder 07/06/2025 02:23 PM
gebruikelijk is. Er bestaan bovendien verschillende standaarden voor gestructureerde data-uitwisseling, zoals ISO 8601 (2025-07-06T14:23:45Z
) of RFC 2822 (Sun, 06 Jul 2025 14:23:45 GMT
), die handig zijn bij API's en e-mailsystemen.
Om dit allemaal werkbaar te maken biedt de tool meerdere voorgeconfigureerde patronen aan, waaronder ISO (lokaal of UTC), RFC, lokale formattering via Intl.DateTimeFormat
, en uiteraard een aangepaste modus waarin je je eigen patroon kunt samenstellen. Denk hierbij aan een patroon zoals DD/MM/YYYY HH:mm:ss
, dat dan resulteert in een waarde als 06/07/2025 14:23:45
.
De tool bevat een formatter en parser die met behulp van zogenaamde tokens werkt. Deze tokens fungeren als placeholders die bij het formatteren worden vervangen door delen van de datum, en bij het parsen worden herkend en geïnterpreteerd als invoer. Een overzicht van de beschikbare tokens vind je hieronder. Hierbij is het belangrijk te weten dat alle tokens werken bij het weergeven, terwijl sommige alleen beschikbaar zijn bij het parsen. Zo is MMMM
, de volledige maandnaam, alleen bruikbaar bij weergeven en niet bij het parsen.
Token | Betekenis | Formatter | Parser |
---|---|---|---|
YYYY | Viercijferig jaar | Ja | Ja |
YY | Laatste twee cijfers van jaar | Ja | Ja |
MMMM | Volledige maandnaam | Ja | Nee |
MMM | Afkorting maandnaam (3 letters) | Ja | Nee |
MM | Maand met voorloopnul (01–12) | Ja | Ja |
M | Maand zonder voorloopnul (1–12) | Ja | Ja |
DD | Dag van de maand met voorloopnul (01–31) | Ja | Ja |
D | Dag van de maand zonder voorloopnul | Ja | Ja |
dddd | Volledige naam weekdag | Ja | Nee |
ddd | Afkorting weekdag (3 letters) | Ja | Nee |
dd | Afkorting weekdag (2 letters) | Ja | Nee |
d | Dag van de week (1=Zondag) | Ja | Nee |
HH | Uur in 24-uursformaat (met voorloopnul) | Ja | Ja |
H | Uur in 24-uursformaat | Ja | Ja |
hh | Uur in 12-uursformaat (met voorloopnul) | Ja | Ja |
h | Uur in 12-uursformaat | Ja | Ja |
kk | Uur 1–24 (startend bij 1) met voorloopnul | Ja | Ja |
k | Uur 1–24 (startend bij 1) | Ja | Ja |
mm | Minuten met voorloopnul | Ja | Ja |
m | Minuten zonder voorloopnul | Ja | Ja |
ss | Seconden met voorloopnul | Ja | Ja |
s | Seconden zonder voorloopnul | Ja | Ja |
SSS | Milliseconden (3 cijfers) | Ja | Ja |
A | AM of PM (hoofdletters) | Ja | Ja |
a | am of pm (kleine letters) | Ja | Ja |
ZZ | Tijdzone offset zonder dubbele punt (bv. +0200) | Ja | Ja |
Z | Tijdzone offset met dubbele punt (bv. +02:00) | Ja | Ja |
z | Tijdzone naam (zoals CET) | Ja | Nee |
QQQ | Volledige kwartaalnaam (bijv. "2e kwartaal") | Ja | Nee |
QQ | Kwartaal in Q1–Q4 | Ja | Nee |
Q | Kwartaal als cijfer (1–4) | Ja | Nee |
X | Epoch in seconden | Ja | Ja |
x | Epoch in milliseconden | Ja | Ja |
Een belangrijk onderdeel van de tool is dat je beide kanten op kan werken. Wanneer je bijvoorbeeld een tijdstempel invoert, wordt de datum automatisch geüpdatet volgens het gekozen formaat. En omgekeerd als je een datum in het invoerveld typt, bijvoorbeeld 06-07-2025 14:23:45
met als patroon DD-MM-YYYY HH:mm:ss
, wordt de bijbehorende tijdstempel automatisch berekend. Dit maakt de tool handig bij het testen van datumlogica in front-end of back-end code, bij het debuggen van logs, of simpelweg wanneer je als ontwikkelaar snel een datum moet vertalen naar een epoch of vice versa.
Intern maakt de widget gebruik van JavaScript's Date
-object, Intl.DateTimeFormat
en enkele reguliere expressies om patronen te matchen en waarden te extraheren. Daarnaast wordt de status opgeslagen in localStorage
, zodat je favoriete instellingen bewaard blijven wanneer je terug komt.
Verder lezen
- Wikipedia: ISO 8601
- MDN: Date
- MDN: Intl.DateTimeFormat
- IETF: Date/Time Formats from RFC 7231, Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
Widget gemaakt met staark