Tech Help
Unix Timestamp i sekunder vs millisekunder: varför datumet visar 1970
Blir ett Unix timestamp ett datum nära 1970 är det ofta sekunder som lästs som millisekunder. Så skiljer du enheterna.
Ger ett Unix timestamp ett datum nära 1970 tolkas värdet ofta i fel enhet.
Unix timestamps använder vanligen sekunder, medan JavaScript Date vanligen använder millisekunder.
Ett modernt 10-siffrigt timestamp är ofta sekunder, ett 13-siffrigt ofta millisekunder. Stämmer inte enheterna kan du behöva multiplicera eller dividera med 1 000.
Du omvandlade ett timestamp och landade i januari 1970. Det är sällan en trasig klocka. Talet lästes som millisekunder när det lagrats i sekunder—eller tvärtom.
Vad är ett Unix timestamp?
Ett Unix timestamp mäter tid sedan Unix epoch: 1970-01-01 00:00:00 UTC. Det använder vanligen hela sekunder. Samma ögonblick kan också lagras i millisekunder (sekunder × 1 000). Talet självt anger inte enheten.
Sekunder vs millisekunder: skillnaden ×1 000
En sekund är 1 000 millisekunder. Jämför 1720000000 med 1720000000000. Är det första sekunder och det andra millisekunder är det samma ögonblick. Läser du det första som millisekunder hoppar datumet mot 1970.
Dessa UTC-resultat räknades fram ur talen ovan, de är inte gissningar.
| Värde | Trolig enhet | Tolkning (UTC) |
|---|---|---|
| 1720000000 | Sekunder | Modernt datum som sekunder: 2024-07-03 09:46:40 UTC |
| 1720000000000 | Millisekunder | Samma ögonblick som millisekunder: 2024-07-03 09:46:40 UTC |
| 1720000000 som millisekunder | Fel enhet | Datum nära 1970: 1970-01-20 21:46:40 UTC |
Varför visar mitt timestamp 1970?
Behandlas ett sekundvärde som millisekunder är talet 1 000 gånger för litet. JavaScript räknar då bara ett kort stycke efter Unix epoch, så datumet blir 1970:
const seconds = 1720000000;
new Date(seconds);
// 1970-01-20 21:46:40 UTC
new Date(seconds * 1000);
// 2024-07-03 09:46:40 UTC
Det där 1970-datumet är epoch plus ungefär två veckor. Multiplicera sekunder med 1 000 innan du skickar dem till Date.
- SEKUNDER
- 1720000000
- MILLISEKUNDER
- 1720000000000
- Sekundvärde
- Felaktigt behandlat som millisekunder
- Datum nära 1970
Ligger resultatet nära 1970, kontrollera timestamp-enheten innan du felsöker tidszonen.
Är 10 siffror sekunder och 13 millisekunder?
För moderna datum är 10 siffror ofta sekunder och 13 ofta millisekunder. Det är en snabb ledtråd, inte en valideringsregel. Sifferantalet ändras med tidsintervallet, och vissa API:er lagrar mikro- eller nanosekunder. Bekräfta enheten mot dokumentation eller ett datum som stämmer.
Varför det händer så ofta i JavaScript
I JavaScript är ett numeriskt Date-värde millisekunder sedan epoch. Många backends, databaser och Unix-verktyg lagrar fortfarande sekunder. Att skicka ett sekundvärde rakt in i Date är därför ett vanligt fel:
const unixSeconds = 1720000000;
const wrong = new Date(unixSeconds);
const correct = new Date(unixSeconds * 1000);
wrong ligger nära 1970 (1970-01-20 21:46:40 UTC). correct är det moderna ögonblicket (2024-07-03 09:46:40 UTC).
Andra system använder andra enheter
Andra språk, API:er och databaser kan använda sekunder eller millisekunder. Vissa lagrar mikro- eller nanosekunder. Anta inte att ett språk alltid använder en enhet—kolla dokumentationen. Står talet i JSON kan Formatera och jämför JSON göra fältet läsbart; enheten säger det ändå inte.
Hur vet jag vilken enhet mitt timestamp använder?
Gå igenom de här kontrollerna i ordning. Sifferantalet räcker inte.
- Kolla API- eller databasedokumentationen.
- Titta på ungefärligt antal siffror.
- Jämför värdet med ett rimligt modernt timestamp.
- Testa värdet som sekunder och som millisekunder.
- Kolla om det resulterande datumet är rimligt.
Landar den ena tolkningen i 1970 och den andra på ett datum du känner igen är enhetsfelet orsaken.
Vanliga Unix timestamp-misstag
- Sekunder tolkade som millisekunder. Datumet kollapsar mot 1970, som i exemplet ovan.
- Millisekunder tolkade som sekunder. Datumet hoppar långt in i framtiden, eller omvandlingen misslyckas.
- Multiplicera med 1 000 två gånger. Ett redan millisekundbaserat värde blir enormt och datumet hoppar århundraden framåt.
- Dividera med 1 000 två gånger. Ett sekundvärde krymper igen, åter nära 1970.
- Skylla på tidszonen. En zon kan flytta timmar eller kalenderdagen. Den flyttar inte ett modernt timestamp till 1970.
- Behandla en formaterad datumsträng som Unix timestamp. Ett värde som 2024-07-03T09:46:40Z är inget epoch-tal. Tolka det som datum, inte som sekunder.
Orsakar tidszonen 1970-problemet?
Vanligtvis inte. En tidszon kan ändra visad klocka och, nära midnatt, kalenderdatumet. Den gör inte ett modernt Unix timestamp till 1970. Är resultatet 1970, kolla sekunder mot millisekunder först.
Omvandla och kontrollera ett Unix timestamp
NEXNARA Datum- och tidskonverterare kan omvandla ett Unix timestamp i webbläsaren.
Klistra in Unix-sekunder eller millisekunder, använd aktuellt timestamp, se UTC och lokal tid, konvertera tidszoner och formatera ett datum. Autodetektering behandlar ofta 10 siffror som sekunder och 13 som millisekunder; du kan ändå välja enhet.
Själva omvandlingen sker i din webbläsare. Verktyget skickar inte datum eller timestamps till en NEXNARA-server. Annonser och andra sajtfunktioner använder fortfarande nätet; det är skilt från omvandlingen.
Behöver du kolla ett Unix timestamp? Öppna Datum- och tidskonverterare och jämför sekunder med millisekunder.
FAQ
Varför visar mitt Unix timestamp 1970?
Det är ofta sekunder som lästs som millisekunder. JavaScript behandlar då ett mycket mindre tal, så datumet hamnar strax efter 1970-01-01 00:00:00 UTC. Multiplicera sekunder med 1 000 och omvandla igen.
Är Unix timestamps sekunder eller millisekunder?
Unix timestamps använder vanligen sekunder. Många webb-API:er och JavaScript Date använder millisekunder. Kolla alltid vad det systemet dokumenterar. Vissa system använder mikro- eller nanosekunder.
Hur omvandlar jag sekunder till millisekunder?
Multiplicera med 1 000. 1720000000 sekunder är 1720000000000 millisekunder. Åt andra hållet dividerar du med 1 000.
Varför använder JavaScript Date millisekunder?
Det numeriska Date-timestampet i JavaScript definieras som millisekunder sedan Unix epoch. Därför är new Date(unixSeconds) fel när unixSeconds är Unix-sekunder.
Är ett 10-siffrigt timestamp alltid sekunder?
Nej. För moderna datum är det ofta sekunder, och 13 siffror är ofta millisekunder. Sifferantalet är en ledtråd, inte en regel. Bekräfta med dokumentation eller ett datum som stämmer.
Innehåller ett Unix timestamp en tidszon?
Nej. Ett Unix timestamp är ett ögonblick räknat från 1970-01-01 00:00:00 UTC. Tidszoner påverkar hur ögonblicket visas, inte talet självt.