Unix-timestamp naar datum converter

Converteer een Unix-timestamp naar een leesbare datum en tijd — of elke datum terug naar een Unix-timestamp. Ondersteunt seconden en milliseconden.

Deze tool delen

Insluiten op je website

Wat is een Unix timestamp?

Een Unix timestamp, ook wel Unix time of POSIX time genoemd, is het aantal seconden dat is verstreken sinds 1970-01-01 00:00:00 UTC, bekend als de Unix epoch. Het is een wijdverspreide standaard in de informatica omdat het een moment in de tijd als één enkel geheel getal weergeeft, wat opslag, vergelijking en berekeningen eenvoudig maakt.

JavaScript werkt intern in milliseconden, dus Date.now() geeft de Unix timestamp vermenigvuldigd met 1000. Veel API's, databases en backendsystemen gebruiken in plaats daarvan seconden. Deze tool accepteert beide formaten en detecteert automatisch of je seconden of milliseconden hebt ingevoerd op basis van de grootte van het getal.

Opvallende Unix timestamps

TimestampDatum (UTC)Opmerking
01970-01-01 00:00:00Unix epoch
1.000.000.0002001-09-09 01:46:401 miljard seconden
2.000.000.0002033-05-18 03:33:202 miljard seconden
2.147.483.6472038-01-19 03:14:07Year 2038 problem (maximaal 32-bits)

Waarom 1970?

De Unix epoch van 1 januari 1970 werd gekozen deels uit conventie en deels uit praktische beperkingen. Unix werd eind jaren zestig en begin jaren zeventig bij Bell Labs ontwikkeld. De ontwikkelaars hadden een recente, ronde startdatum nodig voor hun tijdrepresentatie. 1 januari 1970 was recent genoeg om praktisch te zijn en had geen bijzondere technische betekenis — het was simpelweg een handig ankerpunt.

Alternatieve epochdatums bestaan in andere systemen: de Windows FILETIME epoch is 1 januari 1601; GPS-tijd begon op 6 januari 1980; de NTP epoch is 1 januari 1900. Bij conversie tussen systemen is het belangrijk om de epoch van elk systeem te kennen.

Seconden versus milliseconden

De originele Unix timestamp is in seconden. De meeste server-side talen en systemen (Unix shell, time.time() van Python, time() van PHP, de meeste databases) gebruiken seconden. Date.now() en new Date().getTime() van JavaScript geven milliseconden. Dit verschil is een veel voorkomende bron van bugs wanneer JavaScript-frontends communiceren met backend-API's.

Een Unix timestamp in seconden is momenteel een getal met 10 cijfers (rond 1.700.000.000 per 2023). Een milliseconde-timestamp heeft 13 cijfers. De rekenmachine detecteert welk formaat je hebt ingevoerd op basis van het aantal cijfers en converteert dienovereenkomstig.

Het Year 2038 problem

Systemen die Unix timestamps opslaan als een ondertekend 32-bits getal kunnen alleen datums weergeven tot 2.147.483.647 seconden na de epoch — wat 03:14:07 UTC is op 19 januari 2038. Na dat moment loopt een 32-bits ondertekend getal over naar een groot negatief getal, dat een datum in 1901 voorstelt.

Dit wordt soms het "Y2K38" problem of de Unix Millennium Bug genoemd. Moderne 64-bits systemen zijn niet getroffen, omdat een ondertekend 64-bits getal timestamps kan weergeven voor ongeveer 292 miljard jaar. Embedded systemen, oudere databases en ouder 32-bits software kunnen echter nog steeds kwetsbaar zijn. Veel sectoren — waaronder telecommunicatie, bankwezen en industriële controle systemen — hebben lopende migratietrajecten om dit aan te pakken.

Hoe je de huidige Unix timestamp krijgt

Taal / omgevingCommando
JavaScriptMath.floor(Date.now() / 1000)
Pythonimport time; int(time.time())
PHPtime()
Bashdate +%s
SQL (PostgreSQL)EXTRACT(EPOCH FROM NOW())::int
SQL (MySQL)UNIX_TIMESTAMP()
Gotime.Now().Unix()
RustSystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs()

Praktische toepassingen

API-ontwikkeling: REST API's gebruiken veelal Unix timestamps voor velden als created_at, updated_at en token-verloopdatum. Een timestamp is onafhankelijk van tijdzone en eenduidig — anders dan geformatteerde datumstrings, die afhangen van locale en opmaakconventies.

Token-verloopdatum: JWT (JSON Web Tokens) gebruiken Unix timestamps voor de exp (verloopdatum) en iat (uitgegeven op) claims. Een token verloopt wanneer de huidige timestamp de exp-waarde overschrijdt. Het berekenen van verloopdata — "deze token moet over 24 uur verlopen" — vereist het optellen van 86.400 seconden bij de huidige timestamp.

Cache TTL: Cachegeldigheid wordt vaak ingesteld als een Unix timestamp of als een aantal seconden vanaf nu. Bij het debuggen van cacheproblemen moet je vaak een opgeslagen verloptimestamp naar een leesbare datum converteren.

Loganalyse: Serverlogboeken bevatten vaak Unix timestamps. Het converteren naar leesbare datums is de eerste stap om logvermeldingen met echte gebeurtenissen te correleren.

Databaseopslag: Het opslaan van timestamps als getallen in plaats van geformatteerde strings vermijdt bugs bij tijdzoneconversie en vereenvoudigt sortering, bereikquery's en berekeningen. Een query voor "alle records van de afgelopen 7 dagen" wordt WHERE created_at > (NOW_UNIX - 604800).

Gerelateerde artikelen