Unix timestamp na datum a čas – převodník časového razítka epoch

Poslední revize obsahu:

Vlož Unix timestamp a přečti si datum a čas. Hodnota 1700000000 odpovídá 14. listopadu 2023, 22:13:20 UTC. Převodník pozná sekundy, milisekundy, mikrosekundy i nanosekundy podle počtu číslic a volba Místní čas ukáže čas v časovém pásmu tvého zařízení.

Můžeš zadat sekundy, milisekundy, mikrosekundy nebo nanosekundy. Jednotka se pozná podle počtu číslic.

UTC
Časové pásmo

Při UTC se čas zobrazí bez posunu, tak jak ho ukládají logy a databáze. Při místním čase se zobrazí v časovém pásmu tvého zařízení i s posunem.

na

Co je Unix timestamp neboli unixové časové razítko?

Unix timestamp, česky unixové časové razítko nebo unixový čas, je počet sekund, které uplynuly od 00:00:00 UTC 1. ledna 1970[1]. Tento okamžik se nazývá unixová epocha. UTC je koordinovaný světový čas, od kterého se odvozují časová pásma po celém světě.

Způsob počítání určuje norma POSIX, společný standard unixových systémů. Každý den v ní má přesně 86 400 sekund[2]. Přestupné sekundy, které se přidávají k UTC, v tomto počtu vlastní číslo nemají[1].

Samotné razítko neobsahuje informaci o časovém pásmu[3]. Číslo 1700000000 popisuje stejný okamžik v Praze i v New Yorku. Liší se jen čas, který v tu chvíli ukazují hodiny v obou městech.

Pět nástěnných hodin s názvy měst Sídney, Londres, Monterrey, Vancouver a New York
Hodiny pro pět měst ukazují pět různých časů. Jedno unixové časové razítko popisuje na všech pěti cifernících stejný okamžik a liší se jen čas přečtený v každém pásmu. Foto: Luis Cortes, Unsplash.

Jakému datu odpovídá Unix timestamp?

Unix timestamp 1700000000 odpovídá 14. listopadu 2023, 22:13:20 UTC. V Česku bylo 23:13:20, protože v listopadu platí středoevropský čas, který je o hodinu napřed před UTC[4].

Datum k libovolnému razítku zjistíš v převodníku nahoře. Vlož číslo do pole Unix časové razítko a datum se objeví v poli Datum a čas už během psaní. Pod výsledkem převodník uvede, v jaké jednotce číslo přečetl.

Jednotku pozná podle počtu číslic. Dnešní razítko v sekundách má deset číslic. Hodnota z JavaScriptu má třináct číslic, protože Date.now() vrací milisekundy[5]. Devatenáct číslic má výsledek funkce time.time_ns() v Pythonu, která počítá nanosekundy[6].

Volba Místní čas v přepínači Časové pásmo ukáže čas v pásmu tvého zařízení a k výsledku připíše posun pásma. V Česku je to v zimě +01:00[4] a v létě +02:00[7].

Razítko pro zvolené datum spočítáš v převodníku data na Unix timestamp.

Jak převést Unix timestamp na datum? Vzorec a příklad

V unixovém čase má každý den přesně 86 400 sekund[2]. Chceš-li převést razítko na datum, vyděl ho číslem 86 400. Celá část výsledku je počet celých dní od 1. ledna 1970. Zbytek po dělení je čas daného dne v sekundách.

Vezmi razítko 1700000000. Po vydělení číslem 86 400 vyjde 19 675 celých dní. Zbytek je 80 000 sekund.

Když 1. leden 1970 počítáš jako den nula, den číslo 19 675 je 14. listopad 2023. Zbytek je čas toho dne: 80 000 sekund je 22 hodin, 13 minut a 20 sekund. Celý výsledek je 2023-11-14 22:13:20 UTC.

Razítko v milisekundách nejdřív vyděl tisícem, v mikrosekundách milionem a v nanosekundách miliardou. Převodník nahoře tohle dělení provede sám, než spočítá datum. Opačný převod, z data na počet sekund, zvládne převodník data na Unix timestamp.

Razítko zapsané šestnáctkově, například 6553F100, nejdřív převeď na desítkové číslo. Udělá to převodník desítkových čísel na šestnáctková po kliknutí na Prohodit pořadí. Hodnota 6553F100 je desítkově 1700000000.

Jaká data odpovídají kulatým unixovým razítkům?

Sestavili jsme kulatá a hraniční razítka: epochu, dny kolem ní, další stamiliony sekund, razítko s číslicemi od 1 do 0 po sobě a hranice 32bitového celého čísla. Všechna data jsou v UTC, tak jak je převodník ukazuje při volbě UTC.
RazítkoDatum a čas v UTCCo tato hodnota znamená
-21474836481901-12-13 20:45:52Nejmenší 32bitové celé číslo se znaménkem
-864001969-12-31 00:00:00Den před epochou
-11969-12-31 23:59:59Poslední sekunda před epochou
01970-01-01 00:00:00Unixová epocha
864001970-01-02 00:00:00Konec prvního dne
10000000002001-09-09 01:46:40Miliarda sekund
12345678902009-02-13 23:31:30Číslice od 1 do 0 po sobě
15000000002017-07-14 02:40:001,5 miliardy sekund
16000000002020-09-13 12:26:401,6 miliardy sekund
17000000002023-11-14 22:13:201,7 miliardy sekund
17356896002025-01-01 00:00:00Začátek roku 2025
17672256002026-01-01 00:00:00Začátek roku 2026
18000000002027-01-15 08:00:001,8 miliardy sekund
20000000002033-05-18 03:33:20Dvě miliardy sekund
21474836472038-01-19 03:14:07Největší 32bitové celé číslo se znaménkem
41024448002100-01-01 00:00:00Začátek roku 2100
42949672952106-02-07 06:28:15Největší 32bitové celé číslo bez znaménka
Hodnoty 1234567890 s číslicemi od 1 do 0 po sobě dosáhl unixový čas v pátek 13. února 2009 ve 23:31:30 UTC[8]. V Česku už byl 14. únor. Počítadlo uložené jako 32bitové celé číslo se znaménkem po hodnotě 2147483647 přeteče. Jeho hodnota se pak změní na -2147483648, což odpovídá 13. prosinci 1901[9]. Ve dvojkové soustavě má číslo 2147483647 zápis z 31 jedniček. Takový zápis ukáže převodník desítkových čísel na dvojková.

Jak poznat, jestli je razítko v sekundách, milisekundách, nebo nanosekundách?

Jednotku poznáš podle počtu číslic. Každé razítko od 9. září 2001 do 20. listopadu 2286 má v sekundách deset číslic. U dnešních dat je proto délka zápisu v každé jednotce stejná.
JednotkaPočet číslic dnesOkamžik 1700000000 v této jednotceKde ji potkáš
Sekundy101700000000time() v PHP, pole exp v tokenu JWT, razítka na Discordu
Milisekundy131700000000000Date.now() v JavaScriptu, EPOCHTODATE s jednotkou 2
Mikrosekundy161700000000000000EPOCHTODATE s jednotkou 3
Nanosekundy191700000000000000000time.time_ns() v Pythonu
Funkce time() v PHP vrací počet sekund od epochy[3]. Pole exp, nbf a iat v tokenu JWT obsahují počet sekund, který může mít desetinnou část[10]. Discord přijímá razítko v sekundách[11]. Date.now() vrací milisekundy[5] a time.time_ns() v Pythonu nanosekundy[6]. Funkce EPOCHTODATE v Tabulkách Google přijímá jednotku 1 pro sekundy, 2 pro milisekundy a 3 pro mikrosekundy[12].

Jakým vzorcem nebo příkazem převést Unix timestamp na datum?

Každý řádek převádí razítko 1700000000 na 14. listopad 2023, 22:13:20 UTC. Výsledky příkazu date, Pythonu a JavaScriptu jsme na tomto razítku ověřili.
KdeVzorec nebo příkazVýsledek pro 1700000000
Excel=A1/86400+DATUM(1970;1;1)2023-11-14 22:13:20 po nastavení formátu data a času v buňce
Excel, razítko v milisekundách=A1/86400000+DATUM(1970;1;1)Stejné datum pro hodnotu 1700000000000
Tabulky Google=EPOCHTODATE(A1)Datum a čas v UTC
Tabulky Google, milisekundy=EPOCHTODATE(A1; 2)Datum a čas v UTC pro hodnotu 1700000000000
MySQLSELECT FROM_UNIXTIME(1700000000);2023-11-14 22:13:20, když má relace pásmo UTC
PostgreSQLSELECT to_timestamp(1700000000);2023-11-14 22:13:20+00, když má relace pásmo UTC
Pythondatetime.fromtimestamp(1700000000, tz=timezone.utc)2023-11-14 22:13:20+00:00
JavaScriptnew Date(1700000000 * 1000).toISOString()2023-11-14T22:13:20.000Z
Linux, příkaz datedate -u -d @1700000000Tue Nov 14 22:13:20 UTC 2023
PowerShell 7.1 a novějšíGet-Date -UnixTimeSeconds 1700000000 -AsUTCDatum a čas v UTC ve formátu místního nastavení
MySQL vrací výsledek FROM_UNIXTIME v časovém pásmu relace, tedy v pásmu nastaveném pro aktuální připojení[13]. PostgreSQL převádí razítko funkcí to_timestamp na typ timestamp with time zone[14]. Hodnoty tohoto typu PostgreSQL zobrazuje v pásmu z parametru TimeZone[15]. V Pythonu řádek potřebuje import from datetime import datetime, timezone. Metoda utcfromtimestamp je od verze 3.12 zastaralá a dokumentace doporučuje fromtimestamp s pásmem UTC[16]. Příkaz date přijímá razítko se znakem @ na začátku[17]. Parametry -UnixTimeSeconds a -AsUTC má Get-Date od PowerShellu 7.1[18].

Jak nastavit vzorec v Excelu a Tabulkách Google, aby ukázal datum?

U jednoho razítka je rychlejší pole nahoře. Celý sloupec razítek vyexportovaných z databáze převede tabulka jedním vzorcem, který roztáhneš dolů.

  1. Excel: vzorec s funkcí DATUM

    Do buňky A1 zapiš razítko a do buňky B1 vzorec =A1/86400+DATUM(1970;1;1). V českém Excelu má funkce DATUM argumenty rok, měsíc a den[19]. Vzorec vydělí sekundy počtem sekund za den a výsledek přičte k datu 1. ledna 1970.
  2. Excel: formát data a času v buňce

    Excel ukládá data jako pořadová čísla a 1. leden 1900 má pořadové číslo 1[19]. Buňka B1 proto nejdřív ukáže počet dní s desetinnou částí, asi 45 244,93. Ve Formátu buněk na kartě Číslo zvol kategorii Vlastní a zadej formát yyyy-mm-dd hh:mm:ss. Pak uvidíš 2023-11-14 22:13:20[20].
  3. Excel: sešit v kalendářním systému 1904

    Excel umí počítat data od 1. ledna 1904 a rozdíl mezi oběma kalendářními systémy je 1462 dní[21]. V systému 1900 má 1. leden 1970 číslo 25569, v systému 1904 má tentýž den číslo 24107. Funkce DATUM vrací číslo v kalendářním systému daného sešitu, takže vzorec dá správné datum v obou systémech.
  4. Tabulky Google: funkce EPOCHTODATE

    V Tabulkách Google stačí vzorec =EPOCHTODATE(A1). Razítko v milisekundách potřebuje druhý argument 2, razítko v mikrosekundách argument 3. Výsledek je vždy v UTC bez ohledu na časové pásmo tabulky[12].
  5. Český čas v tabulce

    Oba vzorce vracejí UTC. Pro středoevropský čas v zimě přičti k výsledku 1/24, tedy hodinu[4]. V létě přičti 2/24, protože letní čas je proti středoevropskému o hodinu napřed[7].

Proč převodník ukazuje jiný čas než hodiny v Česku?

Převodník standardně ukazuje UTC, protože v tomto měřítku se počítá samotné razítko[1]. V Česku platí v zimě středoevropský čas, který je UTC plus jedna hodina[4]. V létě platí letní čas, na který se hodiny posunou o hodinu dopředu[7].

V roce 2026 začíná letní čas 29. března ve 2:00 středoevropského času, kdy se čas změní na 3:00. Končí 25. října ve 3:00 letního času, kdy se vrátí na 2:00[7].

Razítko 1700000000 proto dává 22:13:20 v UTC a 23:13:20 v Praze. V létě je rozdíl dvě hodiny. Razítko 1782864000 znamená půlnoc UTC 1. července 2026 a v Česku jsou v tu chvíli 2:00.

Stejně fungují databáze. MySQL ukazuje výsledek funkce FROM_UNIXTIME v časovém pásmu relace[13]. Stejné razítko přečtené v relaci s pásmem UTC a v relaci s pásmem Europe/Prague dá dva různé časy.

Český čas bez počítání posunu ukáže volba Místní čas v přepínači Časové pásmo, pokud má tvoje zařízení nastavené české pásmo. Razítko pro konkrétní český čas spočítáš v převodníku data na Unix timestamp.

Digitální hodiny na stole vedle klávesnice, ukazují 10:03
Stolní hodiny ukazují místní čas. Převodník standardně ukazuje UTC a volba Místní čas ti ukáže čas, který by ukazovaly hodiny jako tyto. Foto: Andrei Anufrienko, Unsplash.

Zdroje

  1. Unixový čas — Wikipedie
  2. The Open Group Base Specifications Issue 8 (POSIX.1-2024), 4.19 Seconds Since the Epoch — The Open Group
  3. time — PHP Manual — The PHP Group
  4. Středoevropský čas — Wikipedie
  5. Date.now() — MDN Web Docs
  6. time — Time access and conversions — Python Software Foundation
  7. Nařízení vlády č. 348/2021 Sb., o zavedení letního času v letech 2022 až 2026 — epravo.cz
  8. Unix time — Wikipedia (anglicky)
  9. Year 2038 problem — Wikipedia (anglicky)
  10. RFC 7519: JSON Web Token (JWT) — IETF
  11. Reference — Message Formatting — Discord Developer Documentation
  12. Funkce EPOCHTODATE — Nápověda Editory Dokumentů
  13. MySQL 8.4 Reference Manual, Date and Time Functions — Oracle
  14. PostgreSQL Documentation, Date/Time Functions and Operators — PostgreSQL Global Development Group
  15. PostgreSQL Documentation, Date/Time Types — PostgreSQL Global Development Group
  16. datetime — Basic date and time types — Python Software Foundation
  17. GNU Coreutils, Seconds since the Epoch — Free Software Foundation
  18. Get-Date (Microsoft.PowerShell.Utility) — Microsoft Learn
  19. DATUM — Microsoft Support
  20. Nastavení požadovaného formátu data v Excelu — Microsoft Support
  21. Systémy kalendářních dat v Excelu — Microsoft Support

Všechny hodnoty v tabulkách jsme spočítali z definic jednotek a před zveřejněním ověřili výpočtem. Historické údaje a názvy místních jednotek vycházejí ze zdrojů uvedených výše.

Poslední revize obsahu: · napsal a zkontroloval tým Arteon

Nejčastější otázky k Unix timestampu

Jaký je aktuální Unix timestamp?

Aktuální razítko roste každou sekundu o jedna. V září 2026 leží mezi 1788220800 a 1790812799. Přesnou hodnotu vrátí v konzoli prohlížeče výraz Math.floor(Date.now() / 1000), protože Date.now() vrací milisekundy[5].

Co znamená pole exp v tokenu JWT?

Pole exp udává okamžik, od kterého se token nesmí přijmout. Jeho hodnota je počet sekund od 1. ledna 1970 UTC bez přestupných sekund[10]. Vlož ji do převodníku a uvidíš datum a čas, kdy token vyprší. Stejně jsou zapsaná pole iat, tedy okamžik vydání tokenu, a nbf, tedy okamžik, před kterým se token nesmí přijmout[10].

Co je problém roku 2038?

Razítko uložené jako 32bitové celé číslo se znaménkem dosáhne největší hodnoty 19. ledna 2038 ve 03:14:07 UTC[9]. Tato hodnota, 2147483647, má v převodníku desítkových čísel na šestnáctková zápis 7FFFFFFF. O sekundu později počítadlo přeteče a ukáže 13. prosinec 1901[9]. Jádro Linuxu od verze 5.6 z roku 2020 podporuje 64bitový čas i na 32bitových architekturách[9].

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

Ano. Záporné hodnoty označují okamžiky před 1. lednem 1970[14]. Razítko -86400 je 31. prosinec 1969, 00:00:00 UTC. Převodník přijme minus napsaný před číslem.

Jak unixový čas zachází s přestupnými sekundami?

Každý den v unixovém čase má přesně 86 400 sekund[2], takže přestupná sekunda nemá vlastní číslo. Dokumentace GNU uvádí příklad z konce roku 2016. Razítko 1483228799 je 31. prosinec, 23:59:59 UTC, a razítko 1483228800 už je půlnoc 1. ledna 2017. Sekundu 23:59:60 razítkem zapsat nejde[17].

Jak zobrazit Unix timestamp ve zprávě na Discordu?

Napiš do zprávy <t:1700000000>. Discord ten okamžik ukáže v časovém pásmu a formátu každého čtenáře. Styl připíšeš za druhou dvojtečku: <t:1700000000:R> ukáže relativní čas a <t:1700000000:F> celé datum se dnem v týdnu[11].

Proč Python označil metodu utcfromtimestamp za zastaralou?

Metoda datetime.utcfromtimestamp() je od Pythonu 3.12 zastaralá. Vrací objekt bez časového pásma a mnoho metod modulu datetime s takovým objektem zachází jako s místním časem. Dokumentace místo ní doporučuje datetime.fromtimestamp(razitko, tz=timezone.utc)[16].

Přijme pole mezery, tečky a hodnoty v milisekundách?

Ano. Číslice můžeš po třech oddělit mezerou, tečkou, podtržítkem nebo apostrofem, jako v zápisu 1 700 000 000. Jediná čárka nebo jediná tečka odděluje zlomek sekundy, například 1700000000,5. Milisekundy, mikrosekundy a nanosekundy převodník pozná sám podle počtu číslic.

Jak převést datum zpátky na Unix timestamp?

Klikni na Prohodit pořadí. Otevře se převodník data na Unix timestamp a výsledek z pole Datum a čas už bude vepsaný v jeho poli. Datum tam zadáš jako 2023-11-14 22:13:20 nebo 14.11.2023 22:13.

Snímek obrazovky bezplatného nástroje Arteon: Unix timestamp na datum a čas – převodník časového razítka epoch

Pomoz nám vylepšit naše nástroje

Máš nápad, vidíš někde chybu nebo chceš navrhnout funkci? Napiš nám.