Tech Help

Unix Timestamp i sekunder vs millisekunder: hvorfor datoen viser 1970

Bliver et Unix timestamp til en dato nær 1970, er det ofte sekunder læst som millisekunder. Så skelner du enhederne.

Kort svar

Giver et Unix timestamp en dato nær 1970, fortolkes værdien ofte i den forkerte enhed.

Unix timestamps bruger typisk sekunder, mens JavaScript Date typisk bruger millisekunder.

Et moderne 10-cifret timestamp er ofte sekunder, et 13-cifret ofte millisekunder. Matcher enhederne ikke, kan du skulle gange eller dividere med 1.000.

Du omsatte et timestamp og landede i januar 1970. Det er sjældent et i stykker ur. Tallet blev læst som millisekunder, mens det var gemt i sekunder—eller omvendt.

Hvad er et Unix timestamp?

Et Unix timestamp måler tid siden Unix epoch: 1970-01-01 00:00:00 UTC. Det bruger typisk hele sekunder. Samme øjeblik kan også gemmes som millisekunder (sekunder × 1.000). Tallet selv angiver ikke enheden.

Sekunder vs millisekunder: forskellen ×1.000

Ét sekund er 1.000 millisekunder. Sammenlign 1720000000 med 1720000000000. Er det første sekunder og det andet millisekunder, er det samme øjeblik. Læser du det første som millisekunder, hopper datoen mod 1970.

Disse UTC-resultater er beregnet ud fra tallene ovenfor, ikke gættet.

Værdi Sandsynlig enhed Fortolkning (UTC)
1720000000 Sekunder Nutidig dato læst som sekunder: 2024-07-03 09:46:40 UTC
1720000000000 Millisekunder Samme øjeblik læst som millisekunder: 2024-07-03 09:46:40 UTC
1720000000 som millisekunder Forkert enhed Dato nær 1970: 1970-01-20 21:46:40 UTC

Hvorfor viser mit timestamp 1970?

Behandles en sekundværdi som millisekunder, er tallet 1.000 gange for lille. JavaScript tæller så kun et kort stykke efter Unix epoch, og datoen bliver 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

Den 1970-dato er epoch plus cirka to uger. Gang sekunder med 1.000, før du giver dem til Date.

  • SEKUNDER
  • 1720000000
  • MILLISEKUNDER
  • 1720000000000
Samme øjeblik: sekunder × 1.000 = millisekunder.
  • Sekundværdi
  • Fejlagtigt behandlet som millisekunder
  • Dato nær 1970
En sekundværdi læst som millisekunder lander nær Unix epoch.
Sekunder eller millisekunder?

Ligger resultatet nær 1970, tjek timestamp-enheden, før du undersøger tidszonen.

Er 10 cifre sekunder og 13 millisekunder?

For nutidige datoer er 10 cifre ofte sekunder og 13 ofte millisekunder. Det er et hurtigt fingerpeg, ikke en valideringsregel. Cifreantal ændrer sig med tidsintervallet, og nogle API’er gemmer mikro- eller nanosekunder. Bekræft enheden i dokumentationen eller med en dato, der giver mening.

Hvorfor det sker så ofte i JavaScript

I JavaScript er en numerisk Date-værdi millisekunder siden epoch. Mange backends, databaser og Unix-værktøjer gemmer stadig sekunder. At sende en sekundværdi direkte ind i Date er derfor en hyppig fejl:

const unixSeconds = 1720000000;

const wrong = new Date(unixSeconds);
const correct = new Date(unixSeconds * 1000);

wrong ligger nær 1970 (1970-01-20 21:46:40 UTC). correct er det nutidige øjeblik (2024-07-03 09:46:40 UTC).

Andre systemer bruger andre enheder

Andre sprog, API’er og databaser kan bruge sekunder eller millisekunder. Nogle gemmer mikro- eller nanosekunder. Antag ikke, at et sprog altid bruger én enhed—læs dokumentationen. Står tallet i JSON, kan Formatér og sammenlign JSON gøre feltet læsbart; enheden siger det stadig ikke.

Hvordan ved jeg, hvilken enhed mit timestamp bruger?

Gennemgå disse tjek i rækkefølge. Cifreantallet alene er ikke nok.

  1. Tjek API- eller databasedokumentationen.
  2. Se på det omtrentlige antal cifre.
  3. Sammenlign værdien med et troværdigt nutidigt timestamp.
  4. Test værdien som sekunder og som millisekunder.
  5. Tjek om den resulterende dato giver mening.

Lander den ene fortolkning i 1970 og den anden på en dato, du kender, er enhedsforskellen årsagen.

Almindelige Unix timestamp-fejl

  • Sekunder fortolket som millisekunder. Datoen kollapser mod 1970, som i eksemplet ovenfor.
  • Millisekunder fortolket som sekunder. Datoen hopper langt ind i fremtiden, eller konverteringen fejler.
  • Gange med 1.000 to gange. En værdi, der allerede var millisekunder, bliver enorm, og datoen hopper århundreder frem.
  • Dividere med 1.000 to gange. En sekundværdi skrumper igen og lander atter nær 1970.
  • Skyde skylden på tidszonen. En zone kan flytte timer eller kalenderdagen. Den flytter ikke et nutidigt timestamp til 1970.
  • Behandle en formateret datostreng som Unix timestamp. En værdi som 2024-07-03T09:46:40Z er ikke et epoch-tal. Parse den som dato, ikke som sekunder.

Forårsager tidszonen 1970-problemet?

Normalt ikke. En tidszone kan ændre det viste ur og nær midnat kalenderdatoen. Den gør ikke et moderne Unix timestamp til 1970. Er resultatet 1970, tjek sekunder versus millisekunder først.

Konverter og tjek et Unix timestamp

NEXNARA Dato- og tidskonverter kan konvertere et Unix timestamp i browseren.

Indsæt Unix-sekunder eller millisekunder, brug det aktuelle timestamp, se UTC og lokal tid, konverter tidszoner og formatér en dato. Autodetektion behandler ofte 10 cifre som sekunder og 13 som millisekunder; du kan stadig vælge enheden.

Selve konverteringen sker i din browser. Værktøjet sender ikke datoer eller timestamps til en NEXNARA-server. Annoncer og andre sitefunktioner bruger stadig netværket; det er adskilt fra konverteringen.

Skal du tjekke et Unix timestamp? Åbn Dato- og tidskonverter og sammenlign sekunder med millisekunder.

FAQ

Hvorfor viser mit Unix timestamp 1970?

Det er ofte sekunder, der er læst som millisekunder. JavaScript behandler et langt mindre tal, så datoen lander lige efter 1970-01-01 00:00:00 UTC. Gang sekunder med 1.000 og konverter igen.

Er Unix timestamps sekunder eller millisekunder?

De bruger typisk sekunder. Mange web-API’er og JavaScript Date bruger millisekunder. Tjek altid, hvad det system dokumenterer. Nogle systemer bruger mikro- eller nanosekunder.

Hvordan konverterer jeg sekunder til millisekunder?

Gang med 1.000. 1720000000 sekunder er 1720000000000 millisekunder. Den anden vej dividerer du med 1.000.

Hvorfor bruger JavaScript Date millisekunder?

Det numeriske Date-timestamp i JavaScript er defineret som millisekunder siden Unix epoch. Derfor er new Date(unixSeconds) forkert, når unixSeconds er Unix-sekunder.

Er et 10-cifret timestamp altid sekunder?

Nej. For nutidige datoer er det ofte sekunder, og 13 cifre er ofte millisekunder. Cifreantallet er et fingerpeg, ikke en regel. Bekræft med dokumentation eller en dato, der giver mening.

Indeholder et Unix timestamp en tidszone?

Nej. Et Unix timestamp er et øjeblik talt fra 1970-01-01 00:00:00 UTC. Tidszoner påvirker visningen, ikke tallet selv.