Tech Help

Unix Timestamp na dátum: sekundy, milisekundy a UTC vysvetlené

Preveďte Unix timestamp na dátum. Pozrite sekundy oproti milisekundám, UTC oproti miestnemu času, ISO 8601 a ako sa z dátumu vrátiť k epoch času.

Stručná odpoveď

Unix timestamp vyjadruje čas voči Unix epoch: 1970-01-01 00:00:00 UTC. Bežne sa ukladá ako sekundy od epoch, alebo ako milisekundy od epoch.

Aby prevod vyšiel, musíte najprv poznať jednotku. 1720000000 sekúnd je 2024-07-03 09:46:40 UTC. 1720000000000 milisekúnd je ten istý okamih.

Timestamp identifikuje okamih. UTC, miestny čas alebo zóna IANA menia len to, ako sa ten okamih zobrazí.

Toto je sprievodca prevodom: timestamp na dátum, dátum na timestamp, UTC oproti miestnemu času a ISO 8601. Ak hodnota neočakávane spadne na dátum z roku 1970, ide zvyčajne o zámenu sekúnd a milisekúnd — pozrite Unix Timestamp v sekundách vs milisekundách: prečo dátum ukazuje 1970.

Čo je Unix Timestamp?

Unix timestamp, Unix time a epoch time zvyčajne znamenajú uplynutý čas od 1970-01-01 00:00:00 UTC. Číslo nie je formátovaný reťazec dátumu s označením časového pásma. Ten istý okamih sa môže zobraziť s inými hodinami v UTC, New Yorku, Tokiu alebo Soule. Unix timestampy nie sú vždy sekundy — milisekundy sú v praxi bežné.

Čo je Unix Epoch?

Unix epoch je 1970-01-01 00:00:00 UTC. Timestamp 0 je ten okamih. Kladný timestamp je po epoch. Niektoré systémy dovoľujú záporný timestamp pre čas pred epoch, ale podpora jazyka a rozsahu dátumov sa líši.

Je môj timestamp v sekundách, alebo v milisekundách?

1720000000 sú sekundy; 1720000000000 sú milisekundy; je to ten istý okamih. Praktická nápoveda: približne 10 číslic často znamená sekundy, približne 13 milisekundy. Počet číslic je len heuristika. Minulé alebo budúce dátumy, iné jednotky alebo vlastný epoch môžu vyzerať inak. Prevodník dátumu a času vie prevádzať so sekundami, milisekundami alebo automaticky (≤10 číslic ako sekundy, ≥13 ako milisekundy) — jednotku zvoľte, keď ju poznáte.

Prečo zlá jednotka dá zlý dátum?

JavaScript Date očakáva milisekundy. Ak predáte 1720000000 ako milisekundy, vyjde 1970-01-20 21:46:40 UTC. Brať milisekundy ako sekundy, alebo naopak, skončí pri úplne inom dátume. Na diagnostiku roku 1970 pozrite Unix Timestamp v sekundách vs milisekundách: prečo dátum ukazuje 1970.

new Date(1720000000);
// 1970-01-20T21:46:40.000Z

Ako previesť Unix timestamp v sekundách

Vynásobte sekundy 1000 a dostanete milisekundy. JavaScript Date je milisekundový, preto použite new Date(timestamp * 1000).

const timestamp = 1720000000;
const date = new Date(timestamp * 1000);
date.toISOString();
// 2024-07-03T09:46:40.000Z

Ako previesť timestamp v milisekundách

Milisekundy odovzdajte Date priamo. Timestamp, ktorý už je v milisekundách, znova 1000 nenásobte.

const timestamp = 1720000000000;
const date = new Date(timestamp);
date.toISOString();
// 2024-07-03T09:46:40.000Z

Prečo ten istý timestamp ukazuje iný čas?

Unix timestamp je jeden okamih. Zobrazenie v UTC, miestnom čase alebo zvolenej zóne IANA zmení ciferník. Pre 1720000000000 je UTC 2024-07-03 09:46:40. America/New_York v ten deň je 2024-07-03 05:46:40 (EDT). Asia/Seoul je 2024-07-03 18:46:40 (UTC+9). Hodnoty New Yorku a Soulu pochádzajú z Intl, nie z hesla o pevnom posune.

Obsahuje Unix timestamp časové pásmo?

Nie. Neukladá America/New_York ani Asia/Seoul. Timestamp identifikuje okamih. Pásmo sa uplatní, až okamih naformátujete ako čitateľný dátum a čas. Epoch je definovaný voči UTC; číslo samo osebe nie je „pole časového pásma UTC“.

Unix Timestamp versus ISO 8601

1720000000 a 2024-07-03T09:46:40Z môžu predstavovať ten istý okamih. Unix je číselná hodnota uplynutého času. ISO 8601 je čitateľný reťazec dátumu a času a môže končiť na Z (UTC) alebo číselný posun. Z znamená UTC; niekedy sa hovorí Zulu. Nie je to rovnaký formát.

Ako získať aktuálny Unix timestamp?

V JavaScripte je Date.now() milisekundy. Math.floor(Date.now() / 1000) sú sekundy. Do článku nezapečátajte „teraz“; posúva sa.

Date.now();
Math.floor(Date.now() / 1000);

Dá sa dátum previesť späť na Unix timestamp?

Áno. Z explicitného UTC ISO reťazca getTime() vráti milisekundy; vydelte 1000 a zaokrúhlite nadol na sekundy.

const date = new Date("2024-07-03T09:46:40Z");
date.getTime();
// 1720000000000
Math.floor(date.getTime() / 1000);
// 1720000000

Pozor na nejednoznačné formáty dátumu

03/07/2024 môže znamenať 7. marca alebo 3. júla podľa regiónu. Radšej dátum a čas v štýle ISO s pásmom alebo posunom. Prevodník dátumu a času odmieta nejednoznačné číselné dátumy ako 01/02/2026 a žiada výber dátumu alebo hodnotu v štýle ISO.

A čo letný čas?

Unix timestamp neukladá príznak letného času. Miestne zobrazenie uplatní pravidlá zóny. America/New_York má v zime a v lete rôzne posuny, takže „New York je UTC-5“ neplatí vždy.

Zahŕňajú Unix timestampy priestupné sekundy?

Typický čas POSIX/Unix nepočíta priestupné sekundy ako extra SI sekundy na spojitej stupnici. Platformy sa môžu líšiť. Pri každodennom prevode môžete tento detail vynechať.

Časté chyby pri prevode Unix timestamp

Tieto zámeny dajú zlý dátum alebo zlý ciferník:

Sekundy brané ako milisekundy
Moderná hodnota v sekundách potom v JavaScript Date skončí pri roku 1970.

Milisekundy brané ako sekundy
Dátum skočí ďaleko do budúcnosti.

Brať 10 alebo 13 číslic ako zákon
Počet číslic je nápoveda, nie záruka.

Zámena UTC s miestnym časom
Okamih je rovnaký; zobrazené hodiny sa môžu líšiť.

Predpoklad, že pásmo je v čísle
Názvy IANA sa uplatnia pri zobrazení, v timestampu uložené nie sú.

Nejednoznačné dátumy, heslá o letnom čase alebo extra ×1000
Použite vstup v štýle ISO. Timestamp v milisekundách znova nenásobte.

Overené príklady UTC

Tieto časy UTC boli vypočítané, nie uhádnuté:

Vstup Jednotka UTC
0 sekundy 1970-01-01 00:00:00
1720000000 sekundy 2024-07-03 09:46:40
1720000000000 milisekundy 2024-07-03 09:46:40
1720000000 milisekundy 1970-01-20 21:46:40

Jednoduchý rozhodovací sprievodca prevodom

Ak zdroj jednotku vymenúva, použite ju. Inak je počet číslic nápoveda — potom skontrolujte, že dátum vyzerá uveriteľne. Preveďte sekundy na milisekundy, keď API potrebuje ms. Na zobrazenie zvoľte UTC, miestny čas alebo zónu IANA. ISO 8601 sa hodí na uloženie a výmenu.

  • Máte Unix timestamp
  • Jednotka uvedená? Použite ju; inak skontrolujte rád
  • Sekundy? ×1000 ak API potrebuje milisekundy
  • Milisekundy? Použite priamo v API založenom na ms
  • Zobraziť ako UTC, miestny čas alebo zónu IANA
  • Potrebujete reťazec? ISO 8601 sa môže hodiť
Číslo je okamih. Formátovanie volí ciferník.
Timestamp je okamih, nie formát zobrazenia

Timestamp identifikuje bod v čase. UTC, miestny čas alebo časové pásmo len rozhodujú, ako sa ten okamih ukáže človeku.

Prevádzajte Unix timestampy v prehliadači

NEXNARA Prevodník dátumu a času prevádza Unix sekundy a milisekundy, ukazuje UTC, miestny čas a ISO 8601 a prevádza medzi časovými pásmami IANA.

Režim Unix podporuje sekundy, milisekundy, automatickú jednotku, aktuálny čas a dátum na timestamp. Režim pásma hľadá názvy IANA, použije zónu prehliadača a uplatní posuny Intl so znalosťou letného času. Režim formátu má výstup čitateľný podľa regiónu, zobrazenie 12/24 a ochranu pred nejednoznačným dátumom. Rozdiel dátumov je samostatný režim.

Prevod používa API Date a Intl prehliadača. Hodnoty mimo toho, čo Date vie vyjadriť, sa odmietnu. Automatická jednotka neháda hodnoty o 11–12 čísliciach; zvoľte sekundy alebo milisekundy.

Samotný prevod dátumu a timestampu prebieha v prehliadači. Vstupy sa na server NEXNARA kvôli prevodu neposielajú. Reklamy a ďalšie funkcie webu sieť stále používajú.

Vložte timestamp do Prevodník dátumu a času a porovnajte UTC, miestny čas a ISO 8601, kým zvolíte jednotku.

FAQ

Ako previesť Unix timestamp na dátum?

Poznajte jednotku. Pre sekundy v JavaScripte použite new Date(n * 1000). Pre milisekundy new Date(n). Potom formátujte ako UTC, miestny čas alebo zónu.

Je Unix timestamp v sekundách, alebo v milisekundách?

Môže byť oboje. Približne 10 číslic často znamená sekundy a približne 13 milisekundy, ale to je heuristika, nie pravidlo.

Prečo môj timestamp ukazuje 1970?

Zvyčajne sa hodnota v sekundách čítala ako milisekundy. Pozrite Unix Timestamp v sekundách vs milisekundách: prečo dátum ukazuje 1970.

Je Unix timestamp vždy UTC?

Epoch je definovaný voči UTC a číslo identifikuje okamih. Zobrazovacie pásmo je zvlášť. Nie je to uložené „pole časového pásma UTC“.

Obsahuje Unix timestamp časové pásmo?

Nie. Nenesie identifikátor IANA. Pásmo sa uplatní, až okamih naformátujete.

Ako previesť dátum na Unix timestamp?

Z UTC ISO reťazca je date.getTime() milisekundy; Math.floor(date.getTime() / 1000) sú sekundy.