Hvis du noen gang har forespurt en database eller jobbet med et moderne API, har du sannsynligvis sett datoer ikke returnert som "12. oktober 2026", men som en massiv, skremmende tallrekke som 1791800000. Dette er et Unix-tidsstempel, og det er den universelle ryggraden i tidtaking innen informatikk.
Å håndtere datoer og klokkeslett i programmering er notorisk vanskelig. Tidssoner endres, sommertid starter og stopper uforutsigbart, og skuddår introduserer ekstra dager. For å løse denne kaotiske virkeligheten bestemte ingeniørene som bygde Unix-operativsystemet seg for å finne opp sin egen absolutte tidslinje.
Opprinnelsen: 1. januar 1970
Et Unix-tidsstempel er ganske enkelt antallet sekunder som har gått siden 1. januar 1970, klokken 00:00:00 UTC. Dette eksakte øyeblikket i historien er kjent som "Unix-epoken".
Hvorfor 1970? For tidlig på 1970-tallet var lagringen utrolig dyr. Å lagre en dato som en menneskelig lesbar streng som "1970-01-01 00:00:00" tar opp nesten 20 byte med minne. Å lagre det som et enkelt 32-bits heltall tok bare 4 byte. Ved å ta utgangspunktet nær tidspunktet Unix ble oppfunnet, maksimerte de mengden fremtidig tid de kunne lagre innenfor disse 4 bytene.
Hvorfor utviklere elsker Unix-tidsstempler
Den primære grunnen til at Unix-tid er universelt tatt i bruk på tvers av APIer, databaser og mikrotjenester, er at den ikke har noen tidssone. Den representerer et enkelt, absolutt øyeblikk i tid globalt.
Hvis du lagrer en hendelse i en database ved å bruke lokal servertid ("03:00 PM EST"), og senere migrerer serveren din til London, bryter all matematikk. Men hvis en hendelse skjer til tidsstempelet 1700000000, er dette nummeret identisk enten brukeren som spør om det er i Tokyo, New York eller Paris. Frontend-applikasjonen tar ganske enkelt det hele tallet og konverterer det matematisk til brukerens lokale tidssone på skjermen.
Konverter tidsstempler umiddelbart
Ikke prøv å beregne sekunder mentalt. Bruk vårt offline-verktøy for å umiddelbart oversette 10-sifrede eller 13-sifrede tidsstempler til mennesker lesbare datoer i din lokale tidssone.
Åpne tidsstempelkonverteringSekunder vs. millisekunder (10 vs 13-sifferregelen)
En av de vanligste feilene i webutvikling er å sende et tidsstempel til en funksjon og få en dato i år 1970 eller år 52 000. Dette skjer på grunn av en blanding mellom sekunder og millisekunder.
- Standard Unix-tid (sekunder): Et 10-sifret tall (f.eks.
1700000000). Dette er standarden i Linux, PHP og de fleste backend-databaser som MySQL. - JavaScript-tid (millisekunder): Et 13-sifret tall (f.eks.
1700000000000). JavaScriptsDate.now()-funksjon inkluderer millisekunder for høyere presisjon.
Hvis du mater et 10-sifret backend-tidsstempel inn i JavaScript uten å multiplisere det med 1000, antar JavaScript at du snakker om de første dagene av januar 1970.
// 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
Året 2038-problemet (Y2K38)
Unix-tiden har en truende deadline. Fordi det opprinnelig ble lagret som et signert 32-bits heltall, er det maksimale antallet det kan inneholde 2,147,483,647.
19. januar 2038, kl. 03:14:07 UTC, vil Unix-klokken treffe det maksimale antallet. Ett sekund senere vil heltallet flyte over, og snu til et negativt tall. Eldre systemer som ikke har blitt oppgradert til 64-bits arkitektur vil plutselig tro at året er 1901, noe som forårsaker katastrofale feil i programvare over hele verden.
Heldigvis har nesten all moderne maskinvare, databaser og programmeringsspråk (som 64-bits Linux-kjerner og moderne Node.js) allerede gått over til 64-bits tid, og skyver det neste overløpet milliarder av år inn i fremtiden.
Ofte stilte spørsmål (FAQ)
Står Unix-tid for skuddsekunder?
Overraskende nok, nei. Unix-tiden antar at hver dag har nøyaktig 86 400 sekunder. Når verden legger til et "hoppsekund" for å tilpasse seg jordens rotasjon, gjentar Unix-systemer vanligvis det samme tidsstemplet to ganger for å holde seg synkronisert uten å bryte matematiske beregninger.
Kan et Unix-tidsstempel være negativt?
Ja. Ethvert tidsstempel mindre enn 0 representerer en dato før Unix-epoken (1. januar 1970). For eksempel representerer -86400 nøyaktig 31. desember 1969.
Hvorfor vises min konverterte dato alltid som 1970?
Du sender sannsynligvis et 10-sifret tidsstempel til en funksjon som forventer 13 sifre (millisekunder). Multipliser tidsstemplet ditt med 1000 før du konverterer det.