Tech Help

Unix Timestamp na datum: sekundy, milisekundy a UTC vysvětleny

Převeďte Unix timestamp na datum. Podívejte se na sekundy versus milisekundy, UTC versus místní čas, ISO 8601 a jak se z data vrátit k epoch času.

Stručná odpověď

Unix timestamp vyjadřuje čas vůči Unix epoch: 1970-01-01 00:00:00 UTC. Běžně se ukládá jako sekundy od epoch, nebo jako milisekundy od epoch.

Aby převod vyšel, musíte nejdřív znát jednotku. 1720000000 sekund je 2024-07-03 09:46:40 UTC. 1720000000000 milisekund je tentýž okamžik.

Timestamp identifikuje okamžik. UTC, místní čas nebo zóna IANA mění jen to, jak se ten okamžik zobrazí.

Toto je převodní návod: timestamp na datum, datum na timestamp, UTC versus místní čas a ISO 8601. Pokud hodnota neočekávaně skončí jako datum z roku 1970, jde obvykle o záměnu sekund a milisekund — viz Unix Timestamp v sekundách vs milisekundách: proč datum ukazuje 1970.

Co je Unix Timestamp?

Unix timestamp, Unix time a epoch time obvykle znamenají uplynulý čas od 1970-01-01 00:00:00 UTC. Číslo není formátovaný řetězec data s označením časového pásma. Tentýž okamžik se může zobrazit s jinými hodinami v UTC, New Yorku, Tokiu nebo Soulu. Unix timestampy nejsou vždy sekundy — milisekundy jsou v praxi běžné.

Co je Unix Epoch?

Unix epoch je 1970-01-01 00:00:00 UTC. Timestamp 0 je ten okamžik. Kladný timestamp je po epoch. Některé systémy dovolují záporný timestamp pro čas před epoch, ale podpora jazyka a rozsahu dat se liší.

Je můj timestamp v sekundách, nebo v milisekundách?

1720000000 jsou sekundy; 1720000000000 jsou milisekundy; je to tentýž okamžik. Praktická nápověda: zhruba 10 číslic často znamená sekundy, zhruba 13 milisekundy. Počet číslic je jen heuristika. Minulá nebo budoucí data, jiné jednotky nebo vlastní epoch mohou vypadat jinak. Převodník data a času umí převádět se sekundami, milisekundami nebo automaticky (≤10 číslic jako sekundy, ≥13 jako milisekundy) — jednotku zvolte, když ji znáte.

Proč špatná jednotka dá špatné datum?

JavaScript Date očekává milisekundy. Předáte-li 1720000000 jako milisekundy, vyjde 1970-01-20 21:46:40 UTC. Brát milisekundy jako sekundy, nebo naopak, skončí u úplně jiného data. Pro diagnostiku roku 1970 viz Unix Timestamp v sekundách vs milisekundách: proč datum ukazuje 1970.

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

Jak převést Unix timestamp v sekundách

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

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

Jak převést timestamp v milisekundách

Milisekundy předejte Date přímo. Timestamp, který už je v milisekundách, znovu 1000 nenásobte.

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

Proč stejný timestamp ukazuje jiný čas?

Unix timestamp je jeden okamžik. Zobrazení v UTC, místním čase nebo zvolené zóně IANA změní ciferník. Pro 1720000000000 je UTC 2024-07-03 09:46:40. America/New_York toho dne 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ázejí z Intl, ne z hesla o pevném posunu.

Obsahuje Unix timestamp časové pásmo?

Ne. Neukládá America/New_York ani Asia/Seoul. Timestamp identifikuje okamžik. Pásmo se uplatní, až okamžik naformátujete jako čitelné datum a čas. Epoch je definován vůči UTC; číslo samo o sobě není „pole časového pásma UTC“.

Unix Timestamp versus ISO 8601

1720000000 a 2024-07-03T09:46:40Z mohou představovat tentýž okamžik. Unix je číselná hodnota uplynulého času. ISO 8601 je čitelný řetězec data a času a může končit na Z (UTC) nebo číselný posun. Z znamená UTC; někdy se říká Zulu. Není to stejný formát.

Jak získat aktuální Unix timestamp?

V JavaScriptu je Date.now() milisekundy. Math.floor(Date.now() / 1000) jsou sekundy. Do článku nezatvrzujte „teď“; posouvá se.

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

Lze datum převést zpět na Unix timestamp?

Ano. Z explicitního UTC ISO řetězce getTime() vrátí milisekundy; vydělte 1000 a zaokrouhlete dolů 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 data

03/07/2024 může znamenat 7. března nebo 3. července podle regionu. Raději datum a čas ve stylu ISO s pásmem nebo posunem. Převodník data a času odmítá nejednoznačná číselná data jako 01/02/2026 a žádá výběr data nebo hodnotu ve stylu ISO.

A co letní čas?

Unix timestamp neukládá příznak letního času. Místní zobrazení uplatní pravidla zóny. America/New_York má v zimě a v létě různé posuny, takže „New York je UTC-5“ neplatí vždy.

Zahrnují Unix timestampy přestupné sekundy?

Typický čas POSIX/Unix nepočítá přestupné sekundy jako extra SI sekundy na spojité stupnici. Platformy se mohou lišit. Při každodenním převodu tenhle detail můžete ignorovat.

Časté chyby při převodu Unix timestamp

Tyto záměny dají špatné datum nebo špatný ciferník:

Sekundy brány jako milisekundy
Moderní hodnota v sekundách pak v JavaScript Date skončí u roku 1970.

Milisekundy brány jako sekundy
Datum skočí daleko do budoucnosti.

Brát 10 nebo 13 číslic jako zákon
Počet číslic je nápověda, ne záruka.

Záměna UTC s místním časem
Okamžik je stejný; zobrazené hodiny se mohou lišit.

Předpoklad, že pásmo je v čísle
Názvy IANA se uplatní při zobrazení, v timestampu uložené nejsou.

Nejednoznačná data, hesla o letním času nebo extra ×1000
Použijte vstup ve stylu ISO. Timestamp v milisekundách znovu nenásobte.

Ověřené příklady UTC

Tyto časy UTC byly spočítány, ne uhádnuty:

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í návod k převodu

Pokud zdroj jednotku jmenuje, použijte ji. Jinak je počet číslic nápověda — pak zkontrolujte, že datum vypadá uvěřitelně. Převeďte sekundy na milisekundy, když API potřebuje ms. Pro zobrazení zvolte UTC, místní čas nebo zónu IANA. ISO 8601 se hodí k uložení a výměně.

  • Máte Unix timestamp
  • Jednotka uvedena? Použijte ji; jinak zkontrolujte řád
  • Sekundy? ×1000 pokud API potřebuje milisekundy
  • Milisekundy? Použijte přímo v API založeném na ms
  • Zobrazit jako UTC, místní čas nebo zónu IANA
  • Potřebujete řetězec? ISO 8601 se může hodit
Číslo je okamžik. Formátování volí ciferník.
Timestamp je okamžik, ne formát zobrazení

Timestamp identifikuje bod v čase. UTC, místní čas nebo časové pásmo jen rozhodují, jak se ten okamžik ukáže člověku.

Převádějte Unix timestampy v prohlížeči

NEXNARA Převodník data a času převádí Unix sekundy a milisekundy, ukazuje UTC, místní čas a ISO 8601 a převádí mezi časovými pásmy IANA.

Režim Unix podporuje sekundy, milisekundy, automatickou jednotku, aktuální čas a datum na timestamp. Režim pásma hledá názvy IANA, použije zónu prohlížeče a uplatní posuny Intl se znalostí letního času. Režim formátu má výstup čitelný podle regionu, zobrazení 12/24 a ochranu před nejednoznačným datem. Rozdíl dat je samostatný režim.

Převod používá API Date a Intl prohlížeče. Hodnoty mimo to, co Date umí vyjádřit, se odmítnou. Automatická jednotka nehádá hodnoty o 11–12 číslicích; zvolte sekundy nebo milisekundy.

Samotný převod data a timestampu probíhá v prohlížeči. Vstupy se na server NEXNARA kvůli převodu neposílají. Reklamy a další funkce webu síť stále používají.

Vložte timestamp do Převodník data a času a porovnejte UTC, místní čas a ISO 8601, než zvolíte jednotku.

FAQ

Jak převést Unix timestamp na datum?

Znejte jednotku. Pro sekundy v JavaScriptu použijte new Date(n * 1000). Pro milisekundy new Date(n). Pak formátujte jako UTC, místní čas nebo zónu.

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

Může být obojí. Zhruba 10 číslic často znamená sekundy a zhruba 13 milisekundy, ale to je heuristika, ne pravidlo.

Proč můj timestamp ukazuje 1970?

Obvykle se hodnota v sekundách četla jako milisekundy. Viz Unix Timestamp v sekundách vs milisekundách: proč datum ukazuje 1970.

Je Unix timestamp vždy UTC?

Epoch je definován vůči UTC a číslo identifikuje okamžik. Zobrazovací pásmo je zvlášť. Není to uložené „pole časového pásma UTC“.

Obsahuje Unix timestamp časové pásmo?

Ne. Nenese identifikátor IANA. Pásmo se uplatní, až okamžik naformátujete.

Jak převést datum na Unix timestamp?

Z UTC ISO řetězce je date.getTime() milisekundy; Math.floor(date.getTime() / 1000) jsou sekundy.