Als je ooit een database hebt doorzocht of met een moderne API hebt gewerkt, heb je waarschijnlijk datums gezien die niet als '12 oktober 2026' zijn geretourneerd, maar als een enorme, intimiderende reeks getallen zoals 1791800000. Dit is een Unix-tijdstempel en vormt de universele ruggengraat van tijdwaarneming in de computerwetenschap.
Het omgaan met datums en tijden bij het programmeren is notoir moeilijk. Tijdzones veranderen, de zomertijd begint en stopt onvoorspelbaar, en schrikkeljaren introduceren extra dagen. Om deze chaotische realiteit op te lossen, besloten de ingenieurs die het Unix-besturingssysteem bouwden hun eigen absolute tijdlijn uit te vinden.
De oorsprong: 1 januari 1970
Een Unix-tijdstempel is eenvoudigweg het aantal seconden dat is verstreken sinds 1 januari 1970, om 00:00:00 UTC. Dit exacte moment in de geschiedenis staat bekend als het "Unix-tijdperk".
Waarom 1970? Omdat opslag begin jaren zeventig ontzettend duur was. Het opslaan van een datum als een voor mensen leesbare tekenreeks, zoals "1970-01-01 00:00:00", neemt bijna 20 bytes geheugen in beslag. Het opslaan ervan als een enkel 32-bits geheel getal kostte slechts 4 bytes. Door het uitgangspunt te maken op het moment dat Unix werd uitgevonden, maximaliseerden ze de hoeveelheid toekomstige tijd die ze binnen die 4 bytes konden opslaan.
Waarom ontwikkelaars dol zijn op Unix-tijdstempels
De belangrijkste reden dat Unix-tijd universeel wordt overgenomen in API's, databases en microservices is dat het geen tijdzone heeft. Het vertegenwoordigt wereldwijd één enkel absoluut moment in de tijd.
Als u een gebeurtenis in een database opslaat met behulp van de lokale servertijd ("15:00 PM EST"), en uw server later naar Londen migreert, gaat al uw wiskunde verloren. Maar als een gebeurtenis plaatsvindt op tijdstempel 1700000000, is dat getal identiek, ongeacht of de gebruiker die ernaar vraagt zich in Tokio, New York of Parijs bevindt. De frontend-applicatie neemt dat gehele getal eenvoudigweg en converteert het wiskundig naar de lokale tijdzone van de gebruiker op zijn scherm.
Converteer tijdstempels onmiddellijk
Probeer niet mentaal seconden te berekenen. Gebruik onze offline tool om tijdstempels van 10 of 13 cijfers onmiddellijk te vertalen naar voor mensen leesbare datums in uw lokale tijdzone.
Open tijdstempelconverterSeconden versus milliseconden (de regel van 10 versus 13 cijfers)
Een van de meest voorkomende bugs bij webontwikkeling is het doorgeven van een tijdstempel aan een functie en het verkrijgen van een datum in het jaar 1970 of het jaar 52.000. Dit gebeurt vanwege een verwisseling tussen seconden en milliseconden.
- Standaard Unix-tijd (seconden): Een getal van 10 cijfers (bijvoorbeeld
1700000000). Dit is de standaard in Linux, PHP en de meeste backend-databases zoals MySQL. - JavaScript-tijd (milliseconden): een getal van 13 cijfers (bijvoorbeeld
1700000000000). De functieDate.now()van JavaScript bevat milliseconden voor hogere precisie.
Als u een 10-cijferige backend-tijdstempel in JavaScript invoert zonder deze met 1000 te vermenigvuldigen, gaat JavaScript ervan uit dat u het over de eerste paar dagen van januari 1970 heeft.
// Correctly handling a Unix timestamp in JavaScript
const backendTimestamp = 1700000000;
const dateObject = new Date(backendTimestamp * 1000);
console.log(dateObject.toLocaleDateString()); // Converts to local user timezone
Het jaar 2038-probleem (J2K38)
Unix-tijd heeft een naderende deadline. Omdat het oorspronkelijk is opgeslagen als een 32-bits geheel getal met teken, is het maximale aantal dat het kan bevatten 2.147.483.647.
Op 19 januari 2038, om 03:14:07 UTC zal de Unix-klok dat maximale aantal bereiken. Een seconde later loopt het gehele getal over en verandert het in een negatief getal. Oudere systemen die niet zijn geüpgraded naar 64-bits architectuur zullen plotseling denken dat het het jaar 1901 is, wat wereldwijd catastrofale fouten in software veroorzaakt.
Gelukkig zijn bijna alle moderne hardware, databases en programmeertalen (zoals 64-bits Linux-kernels en moderne Node.js) al overgestapt op 64-bits tijd, waardoor de volgende overflow miljarden jaren in de toekomst wordt geschoven.
Veelgestelde vragen (FAQ)
Houdt Unix-tijd rekening met schrikkelseconden?
Verrassend genoeg, nee. Unix-tijd gaat ervan uit dat elke dag precies 86.400 seconden heeft. Wanneer de wereld een "schrikkelseconde" toevoegt om zich aan te passen aan de rotatie van de aarde, herhalen Unix-systemen doorgaans dezelfde tijdstempel twee keer om gesynchroniseerd te blijven zonder wiskundige berekeningen te verbreken.
Kan een Unix-tijdstempel negatief zijn?
Ja. Elke tijdstempel kleiner dan 0 vertegenwoordigt een datum vóór het Unix-tijdperk (1 januari 1970). -86400 vertegenwoordigt bijvoorbeeld precies 31 december 1969.
Waarom wordt bij mijn omgerekende datum altijd 1970 weergegeven?
U geeft waarschijnlijk een tijdstempel van 10 cijfers door aan een functie die 13 cijfers (milliseconden) verwacht. Vermenigvuldig uw tijdstempel met 1000 voordat u deze converteert.