Wat is een Unix-tijdstempel? De complete gids
Wat is een Unix-tijdstempel?
Een Unix-tijdstempel (ook wel POSIX-tijd of epoch-tijd genoemd) is een systeem voor het bijhouden van tijd dat het aantal seconden telt dat is verstreken sinds de Unix-epoch — 00:00:00 UTC op 1 januari 1970 — exclusief schrikkelseconden.
In tegenstelling tot leesbare datums die variëren per tijdzone ("19 juli 2026, 15:30 uur EST"), is een Unix-tijdstempel een enkel geheel getal dat overal op aarde hetzelfde moment vertegenwoordigt. Zo komt het tijdstempel 1785292800 overeen met een specifiek moment, ongeacht of je in New York, Londen of Tokio bent.
Unix-tijdstempels vormen de ruggengraat van tijdverwerking in moderne computersystemen. Besturingssystemen, programmeertalen, databases en bestandssystemen vertrouwen allemaal onder de motorkap op deze eenvoudige gehele-getalrepresentatie.
De Unix-epoch: waarom 1 januari 1970?
De keuze voor 1 januari 1970 als de "epoch" (het startpunt) was niet willekeurig. Verschillende praktische overwegingen leidden tot dit besluit:
- Vroege Unix-ontwikkeling: Het Unix-besturingssysteem werd eind jaren 60 en begin jaren 70 ontwikkeld bij Bell Labs. Tegen de tijd dat het tijdsysteem begin jaren 70 werd gestandaardiseerd, was 1 januari 1970 een schoon, recent referentiepunt.
- Eenvoud: Tijd op vroege Unix-systemen werd opgeslagen als een 32-bits geheel getal met teken dat seconden telde. Het gebruik van een recente datum maximaliseerde het representeerbare bereik naar de toekomst toe.
- Precedent: De epoch werd geformaliseerd in de eerste POSIX-standaard, waardoor het de universele referentie werd voor systemen die van Unix zijn afgeleid.
Eerdere Unix-achtige systemen hadden verschillende epoch-datums gebruikt, maar de 1970-epoch won en is sindsdien de standaard voor alle POSIX-conforme systemen.
Hoe de tijdstempelwaarde werkt
Het kernidee is eenvoudig:
- Een tijdstempel van
0betekent exact 1 januari 1970, 00:00:00 UTC - Een tijdstempel van
86400(60 × 60 × 24) betekent 2 januari 1970, 00:00:00 UTC - Een tijdstempel van
-3600betekent 31 december 1969, 23:00:00 UTC (negatieve tijdstempels vertegenwoordigen datums vóór de epoch)
De formule is eenvoudig:
timestamp = seconds since 1970-01-01 00:00:00 UTC
Milliseconde-tijdstempels
Veel moderne systemen, met name JavaScript en web-API's, gebruiken milliseconden in plaats van seconden. Een milliseconde-tijdstempel is simpelweg de op seconden gebaseerde waarde vermenigvuldigd met 1000:
Date.now()in JavaScript retourneert millisecondentime.time()in Python retourneert seconden als een float met fractionele milliseconden
Controleer altijd welke resolutie een systeem gebruikt vóór het converteren, omdat het door elkaar halen datums kan opleveren die tientallen jaren afwijken.
Het Year 2038-probleem
Het Year 2038-probleem (ook wel de "Unix-millenniumbug" of "Y2K38" genoemd) is een probleem in tijdweergave dat systemen zal treffen die tijdstempels opslaan als 32-bits gehele getallen met teken.
Een 32-bits geheel getal met teken kan waarden bevatten van ongeveer -2,1 miljard tot +2,1 miljard. Het maximaal representeerbare Unix-tijdstempel is 2147483647, wat overeenkomt met:
- 19 januari 2038, 03:14:07 UTC
Eén seconde later zou de waarde overlopen naar -2147483648, wat 13 december 1901 vertegenwoordigt — waardoor systemen de huidige tijd interpreteren als een datum uit het begin van de 20e eeuw.
Welke systemen worden getroffen?
- Ingebedde apparaten en IoT-hardware met 32-bits processors
- Oudere ingebedde Linux-kernels
- Legacy-databases met tijdkolommen van 32-bits gehele getallen
- Bestandssystemen en binaire formaten die tijd opslaan als 32-bits gehele getallen
De oplossing
Moderne systemen zijn grotendeels overgestapt op 64-bits gehele getallen voor tijdopslag. Een 64-bits geheel getal met teken kan tijden vertegenwoordigen tot ongeveer 292 miljard jaar in de toekomst — voor elk praktisch doel feitelijk oneindig.
- De meeste moderne Linux-distributies op 64-bits hardware zijn al veilig
- De Linux-kernel gebruikt al jaren een 64-bits time_t op 64-bits systemen
- Kernel 5.6+ introduceerde 64-bits time_t-ondersteuning voor 32-bits architecturen
- Programmeertalen zoals Python, Go en Java gebruiken intern 64-bits gehele getallen
Als je ingebedde systemen of legacy-software onderhoudt, is het controleren van je time_t-grootte vandaag de dag een nuttige oefening.
UTC en de relatie met Unix-tijdstempels
Unix-tijdstempels zijn inherent tijdzoneonafhankelijk — ze verwijzen altijd naar UTC.
Wat is UTC?
Gecoördineerde Universele Tijd (UTC) is de primaire tijdstandaard waarmee de wereld klokken en tijd reguleert. Het verving Greenwich Mean Time (GMT) als de internationale standaard en wordt onderhouden door atoomklokken.
Waarom UTC ertoe doet voor Unix-tijdstempels
- Unix-tijdstempels zijn gedefinieerd in UTC, dus een tijdstempel vertegenwoordigt wereldwijd hetzelfde moment
- Het converteren van een Unix-tijdstempel naar lokale tijd is puur een weergavekwestie
- Er wordt geen tijdzone-informatie opgeslagen in het tijdstempel zelf, wat het systeem eenvoudig en draagbaar houdt
Dit ontwerp betekent dat je een Unix-tijdstempel kunt delen met iedereen ter wereld en beide partijen kunnen het zonder dubbelzinnigheid naar hun eigen lokale tijd converteren.
Schrikkelseconden: de zeldzame uitzondering
Unix-tijdstempels tellen theoretisch seconden sinds de epoch, maar ze negeren schrikkelseconden. Een dag met een toegevoegde schrikkelseconde heeft in Unix-tijd nog steeds exact 86400 seconden. Dit betekent dat tijdens een schrikkelseconde het Unix-tijdstempel niet oploopt en de schrikkelseconde effectief uit de telling verdwijnt.
Deze vereenvoudiging houdt het systeem praktisch, maar betekent dat Unix-tijdstempels enigszins afwijken van atoomtijd. Het verschil is klein genoeg dat het voor alledaagse toepassingen zelden uitmaakt.
Veelvoorkomende tijdstempelbereiken
| Tijdstempel | Leesbare datum | Betekenis | |-----------|---------------------|--------------| | 0 | 1970-01-01 00:00:00 UTC | De Unix-epoch | | 86400 | 1970-01-02 00:00:00 UTC | Eén dag na de epoch | | 946684800 | 2000-01-01 00:00:00 UTC | Het jaar 2000 | | 1234567890 | 2009-02-13 23:31:30 UTC | Een memorabel patroon | | 1785292800 | 2026-07-19 00:00:00 UTC | De epoch van vandaag | | 2147483647 | 2038-01-19 03:14:07 UTC | 32-bits maximum |
Samenvatting
Een Unix-tijdstempel is een elegante, draagbare manier om tijd weer te geven als een enkel geheel getal. Het ontwerp — seconden tellen vanaf 1 januari 1970 UTC — maakt het de universele tijdstandaard in besturingssystemen, databases en programmeertalen. Hoewel het 2038-probleem dreigt voor legacy-systemen, zorgt de voortdurende overgang naar 64-bits tijd ervoor dat het Unix-tijdstempel generaties lang de hoeksteen van computertijdwaarneming zal blijven.
Klaar om met Unix-tijdstempels te werken? Gebruik onze Unix-tijdstempelconverter om direct te converteren tussen tijdstempels en leesbare datums.