Jak převodník Unix timestamp použít
- Nahoře na stránce vidíte aktuální Unix timestamp, který se každou sekundu aktualizuje. Kliknutím na Kopírovat ho přenesete do schránky.
- Pro převod timestampu na datum zadejte číslo do levého pole. Výsledek se zobrazí okamžitě v několika formátech: český, UTC, ISO 8601 a RFC 2822.
- Pokud chcete převést datum na timestamp, vyberte datum a čas v pravém poli. Zobrazí se timestamp v sekundách i milisekundách.
- Nástroj automaticky rozpozná, jestli zadáváte sekundy (10 číslic) nebo milisekundy (13 číslic). Jednotku můžete přepnout i ručně.
- U každého výsledku je tlačítko pro kopírování. Klikněte na něj a hodnota se uloží do schránky.
Co je Unix timestamp a k čemu slouží
Unix timestamp (také epoch time nebo POSIX time) je počet sekund, které uplynuly od 1. ledna 1970, 00:00:00 UTC. Tento okamžik se označuje jako Unix epocha. Celý systém vznikl na přelomu 60. a 70. let v laboratořích Bell Labs, kde Ken Thompson a Dennis Ritchie potřebovali jednoduchý způsob, jak ukládat čas v operačním systému Unix.
Hlavní výhoda je jednoduchost. Čas se uloží jako jedno číslo, které roste každou sekundu. Nemusíte řešit časové zóny, letní čas ani různé kalendářní formáty. Hodnota 1710513000 znamená totéž na serveru v Tokiu, v prohlížeči v Praze i v databázi ve Virginii. Proto se Unix timestampy používají v databázích, REST API, logovacích systémech, JWT tokenech, HTTP hlavičkách a prakticky všude, kde software pracuje s časem.
Sekundy nebo milisekundy?
Klasický Unix timestamp se měří v sekundách a má 10 číslic (například 1710513000). Některé systémy ale pracují s milisekundami, které mají 13 číslic (1710513000000). JavaScript vrací milisekundy přes Date.now(), stejně tak Java přes System.currentTimeMillis(). Naopak PHP, Python a většina databází používají sekundy.
Náš převodník rozlišuje oba formáty automaticky podle počtu číslic. Pokud ale pracujete s nestandardním systémem, můžete jednotku přepnout ručně. Podobně jako u Base64 enkodéru nebo JSON formátovače jde o nástroj, který vývojářům šetří čas při každodenní práci s daty.
Problém roku 2038
Starší systémy ukládají Unix timestamp jako 32bitové celé číslo se znaménkem. Maximální hodnota takového čísla je 2 147 483 647, což odpovídá datu 19. ledna 2038, 03:14:07 UTC. V následující sekundě dojde k přetečení a systém začne interpretovat čas jako prosinec 1901. Říká se tomu Y2K38 problém, analogie k problému roku 2000.
Moderní systémy tento problém nemají. Linux od verze 5.6 (rok 2020) podporuje 64bitové timestampy i na 32bitovém hardwaru. JavaScript interně pracuje s milisekundami jako 64bitovým číslem, takže nemá žádný limit v dohledné budoucnosti. Riziko ale zůstává u starších embedded zařízení, IoT senzorů a databází, které stále používají 32bitový formát.
Časté otázky
Proč se počítá právě od roku 1970?
Tvůrci Unixu potřebovali referenční bod blízko vzniku systému, který by se dal reprezentovat malým číslem. 1. leden 1970 byl zvolen jako kompromis, protože Unix vznikal na konci 60. let a toto datum nabízelo čistý začátek dekády.
Fungují záporné timestampy?
Ano. Záporný timestamp označuje datum před 1. lednem 1970. Například hodnota -86400 odpovídá 31. prosinci 1969. Náš převodník záporné hodnoty podporuje.
Jak zjistím aktuální Unix timestamp v kódu?
V JavaScriptu zavolejte Math.floor(Date.now() / 1000). V Pythonu import time; time.time(). V PHP stačí funkce time(). Všechny tyto příkazy vrátí aktuální čas v sekundách od epochy.
Započítává Unix čas přestupné sekundy?
Ne. Unix čas definuje každý den jako přesně 86 400 sekund. Přestupné sekundy, které se občas přidávají kvůli nepravidelnostem v rotaci Země, se do Unix timestampu nezapočítávají. To zjednodušuje výpočty, ale znamená to drobný posun oproti astronomickému času.