Utilia

Převodník Unix timestampu

Převeď Unix timestamp v sekundách nebo milisekundách na čitelné datum v místním čase, UTC a ISO 8601 a libovolné datum převeď zpět na epoch čas.

Aktuální timestamp
–

Timestamp → datum

Místní čas
–
UTC
–
ISO 8601
–

Datum → timestamp

Sekundy
–
Milisekundy
–

Jak používat převodník Unix timestampu

  1. Chceš-li převést timestamp na datum, vlož hodnotu epoch, například 1700000000 nebo 1700000000000. Nástroj podle velikosti čísla pozná, zda jde o sekundy, nebo milisekundy.
  2. Přečti si výsledek v místním čase, v UTC a ve formátu ISO 8601.
  3. Opačným směrem zadej Datum a čas; nástroj vrátí odpovídající hodnotu epoch v sekundách i milisekundách.
  4. Kdykoli potřebuješ „teď“ jako hodnotu epoch, podívej se na Aktuální timestamp nahoře, který se průběžně aktualizuje.

Co je Unix timestamp?

Unix timestamp, také epoch čas nebo čas POSIX, je počet sekund, které uplynuly od epochy Unixu: 1. ledna 1970, 00:00:00 UTC. Například 1700000000 odpovídá 14. listopadu 2023, 22:13:20 UTC. Data před rokem 1970 se vyjadřují zápornými čísly.

Timestampy jsou mezi vývojáři oblíbené, protože jde o jediné číslo, které nezávisí na časových pásmech, letním čase ani formátech dat. Porovnání dvou okamžiků je prosté odečtení a řazení podle času prosté číselné řazení. Najdeš je v databázích, souborech protokolů, odpovědích API, údajích JWT jako exp a iat, metadatech souborů a plánovačích typu cron.

Pamatuj, že čas Unix ignoruje přestupné sekundy: každý den má přesně 86 400 sekund. Díky tomu je aritmetika jednoduchá, a proto timestamp není přesný počet každé fyzické sekundy od roku 1970.

Sekundy a milisekundy

Nejčastějším zdrojem zmatků je jednotka. Tradiční systémy Unix, PHP, time.time() v Pythonu a většina databází používají sekundy, což dnes dává 10místné číslo. Date.now() v JavaScriptu, System.currentTimeMillis() v Javě a mnoho rozhraní API s JSON používají milisekundy, což dává 13místné číslo. Pokud milisekundy vyložíš jako sekundy, ocitneš se desítky tisíc let v budoucnosti; pokud sekundy vyložíš jako milisekundy, ocitneš se v lednu 1970. Tento nástroj podle velikosti čísla vybere správnou jednotku automaticky a při převodu data ukáže obě hodnoty, takže můžeš zkopírovat tu, kterou tvůj systém očekává.

Místní čas, UTC a ISO 8601

Timestamp určuje jeden přesný okamžik, ale tento okamžik se podle časového pásma zobrazuje různě. Místní výsledek používá časové pásmo nastavené na tvém zařízení, zatímco UTC je univerzální reference používaná servery a protokoly. ISO 8601, například 2023-11-14T22:13:20.000Z, je jednoznačný textový formát doporučený pro výměnu dat mezi systémy; koncové Z znamená UTC.

Problém roku 2038

Mnoho starších systémů ukládá čas Unix jako 32bitové celé číslo se znaménkem, jehož maximální hodnota je 2 147 483 647. Tohoto limitu se dosáhne 19. ledna 2038 v 03:14:07 UTC. O sekundu později takový čítač přeteče na velké záporné číslo a čte se jako datum v prosinci 1901. Moderní operační systémy, databáze a jazyky z velké části přešly na 64bitové hodnoty času, které posouvají limit o miliardy let do budoucnosti, ale vestavěná zařízení, zděděné formáty souborů a staré sloupce databází mohou být stále zasaženy. JavaScript sám zasažen není, protože čas ukládá jako milisekundy v 64bitovém čísle s plovoucí desetinnou čárkou.

Soukromí

Všechny převody probíhají ve tvém prohlížeči pomocí jeho vestavěných funkcí pro práci s daty. Žádné timestampy ani data se neodesílají na server.

Časté dotazy

Jak poznám, zda je můj timestamp v sekundách, nebo v milisekundách?

Spočítej číslice. Současné datum má v sekundách 10 číslic a v milisekundách 13 číslic. Nástroj používá stejnou logiku automaticky podle velikosti čísla.

Proč se místní čas liší od UTC?

Oba popisují stejný okamžik. Místní čas uplatňuje posun časového pásma tvého zařízení a pravidla letního času, zatímco UTC žádný posun nemá. Pokud sdílíš čas s lidmi jinde, UTC nebo ISO 8601 zabrání nedorozuměním.

Může být Unix timestamp záporný?

Ano. Záporné hodnoty představují okamžiky před 1. lednem 1970 UTC. Například -86400 je 31. prosince 1969, 00:00:00 UTC.

Obsahuje Unix timestamp časové pásmo?

Ne. Timestamp je vždy vztažen k UTC a nenese informaci o časovém pásmu. Časové pásmo záleží, až když ho zobrazuješ jako kalendářní datum a čas.

Rozbijí se moje systémy v roce 2038?

Jen pokud ukládají čas do 32bitového celého čísla se znaménkem. Zkontroluj starší databáze, vestavěný firmware a binární formáty souborů. Cokoli, co používá 64bitový čas, je v dohledné budoucnosti v bezpečí.