Převodník Unix timestamp na datum

Převeďte Unix timestamp na čitelné datum a čas — nebo jakékoli datum zpět na Unix timestamp. Podporuje sekundy i milisekundy.

Sdílej tento nástroj

Vložit na své stránky

Co je Unix timestamp?

Unix timestamp, také nazývaný Unix time nebo POSIX time, je počet sekund, které uplynuly od 1970-01-01 00:00:00 UTC, což se označuje jako Unix epoch. Jde o široce používaný standard v informatice, protože reprezentuje určitý moment jako jediné číslo, což usnadňuje ukládání, porovnávání a aritmetické operace.

JavaScript interně pracuje s milisekundami, takže Date.now() vrací Unix timestamp vynásobený 1000. Mnoho API, databází a backendových systémů místo toho používá sekundy. Tento nástroj přijímá oba formáty a automaticky detekuje sekundy nebo milisekundy na základě velikosti čísla, které zadáte.

Významné Unix timestampy

TimestampDatum (UTC)Poznámka
01970-01-01 00:00:00Unix epoch
1,000,000,0002001-09-09 01:46:401 miliarda sekund
2,000,000,0002033-05-18 03:33:202 miliardy sekund
2,147,483,6472038-01-19 03:14:07Problém roku 2038 (max 32-bit)

Proč rok 1970?

Unix epoch 1. ledna 1970 byla zvolena částečně na základě konvence a částečně kvůli praktickým omezením. Unix byl vyvinut koncem 60. a na začátku 70. let na Bell Labs. Vývojáři potřebovali nedávné, kulaté výchozí datum pro svou reprezentaci času. 1. ledna 1970 bylo dostatečně nedávné, aby bylo praktické, a nemělo žádný speciální technický význam — byl to prostě vhodný referenční bod.

Alternativní epoch data existují v jiných systémech: Windows FILETIME epoch je 1. ledna 1601, GPS time začal 6. ledna 1980, NTP epoch je 1. ledna 1900. Při převodu mezi systémy je znalost epoch každého systému nezbytná.

Sekundy versus milisekundy

Původní Unix timestamp je v sekundách. Většina serverových jazyků a systémů (Unix shell, Python time.time(), PHP time(), většina databází) používá sekundy. JavaScript Date.now() a new Date().getTime() vrací milisekundy. Tento rozdíl je běžným zdrojem chyb, když JavaScriptové frontendy komunikují s backend API.

Unix timestamp v sekundách je aktuálně 10místné číslo (okolo 1 700 000 000 k roku 2023). Timestamp v milisekundách je 13místné číslo. Kalkulátor detekuje, který formát jste zadali, na základě počtu číslic a příslušně jej převede.

Problém roku 2038

Systémy, které ukládají Unix timestamp jako podepsané 32bitové číslo, mohou reprezentovat pouze data až do 2,147,483,647 sekund od epochy — což je 03:14:07 UTC 19. ledna 2038. Po tomto okamžiku dojde k přetečení 32bitového podepsaného čísla na velké záporné číslo, které reprezentuje datum v roce 1901.

Někdy se to nazývá problém „Y2K38" nebo Unix Millennium Bug. Moderní 64bitové systémy jsou postiženy, protože 64bitové podepsané číslo může reprezentovat timestampy na přibližně 292 miliard let. Zastaralé embedded systémy, staré databáze a starší 32bitový software však mohou být stále zranitelné. Řada odvětví — včetně telekomunikací, bankovnictví a průmyslových řídicích systémů — probíhá na migraci, aby se tomuto problému vyhnula.

Jak získat aktuální Unix timestamp

Jazyk / prostředíPříkaz
JavaScriptMath.floor(Date.now() / 1000)
Pythonimport time; int(time.time())
PHPtime()
Bashdate +%s
SQL (PostgreSQL)EXTRACT(EPOCH FROM NOW())::int
SQL (MySQL)UNIX_TIMESTAMP()
Gotime.Now().Unix()
RustSystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs()

Praktické použití

Vývoj API: REST API běžně používají Unix timestampy pro pole created_at, updated_at a vypršení tokenů. Timestamp je nezávislý na časové zóně a jednoznačný — na rozdíl od formátovaných datumů, které závisejí na lokalitě a konvencích formátování.

Vypršení tokenu: JWT (JSON Web Tokens) používají Unix timestampy pro claims exp (vypršení) a iat (vydáno v). Token vyprší, když aktuální timestamp přesáhne hodnotu exp. Výpočet doby vypršení — „tento token by měl vypršet za 24 hodin" — vyžaduje přidání 86 400 sekund k aktuálnímu timestampu.

Cache TTL: Vypršení cache je často nastaveno jako Unix timestamp nebo jako počet sekund od teď. Ladění problémů s cache často vyžaduje převod uloženého timestampu vypršení na čitelný formát.

Analýza logů: Serverové logy často obsahují Unix timestampy. Jejich převod na čitelné datum je prvním krokem při korelaci záznamů logů se skutečnými událostmi.

Ukládání v databázi: Ukládání timestampů jako celých čísel místo formátovaných řetězců zabraňuje chybám při konverzi časových zón a zjednodušuje třídění, intervalové dotazy a aritmetické operace. Dotaz na „všechny záznamy z posledních 7 dní" se změní na WHERE created_at > (NOW_UNIX - 604800).