Převod Unixového časového razítka na datum: Podpora 12/24 hodinového formátu
Převeďte unixová časová razítka na čitelná data a časy. Vyberte si mezi 12hodinovým a 24hodinovým formátem s tímto jednoduchým, uživatelsky přívětivým nástrojem pro převod.
Převodník Unix časového razítka
Unixové časové razítko je počet sekund od 1. ledna 1970 (UTC)
Převedený datum a čas
Co je Unixové časové razítko?
Unixové časové razítko je počet sekund, které uplynuly od 1. ledna 1970 (půlnoc UTC/GMT), bez započítání přestupných sekund. Je široce používáno v unixových systémech a programovacích jazycích pro výpočty dat a času.
Dokumentace
Převod unixového časového razítka na datum
Unixové časové razítko je číslo, které představuje konkrétní okamžik. Počítá celé sekundy, které uplynuly od půlnoci UTC dne 1. ledna 1970, tedy od okamžiku zvaného unixová epocha. Tento nástroj převádí unixové časové razítko na kalendářní datum a čas, zobrazené ve formátu 24 hodin nebo 12 hodin.
Jak převést unixové časové razítko na datum
Základní vzorec je jednoduchý:
datum = unixová epocha (1970-01-01, 00:00:00 UTC) + časové razítko (v sekundách)
Chcete-li převést počet sekund na datum, přičtěte tento počet sekund k datu 1. ledna 1970. Výsledek je pak třeba rozdělit na rok, měsíc, den, hodinu, minutu a sekundu. To je obtížná část, protože je nutné zohlednit přestupné roky, které přidávají jeden den k únoru, i skutečnost, že měsíce mají různou délku. Většina programovacích jazyků má vestavěnou funkci pro práci s datem, která to provede automaticky, takže to nikdo nemusí počítat krok za krokem.
Příklad výpočtu
Vezměme časové razítko 1609459200.
- Vydělte je počtem sekund v jednom dni: 1 609 459 200 ÷ 86 400 = 18 628 dní.
- Počítejte 18 628 dní od data 1. ledna 1970 a průběžně zohledňujte přestupné roky.
- Počítání skončí na datu 1. ledna 2021.
Časové razítko 1609459200 tedy odpovídá pátku 1. ledna 2021 v 00:00:00 UTC. Den v týdnu, pátek, vyplývá ze stejného počtu dní.
Převaděč zobrazuje výsledek v časovém pásmu, které hlásí váš prohlížeč, nikoli v UTC. Čtenář v New Yorku uvidí stejné časové razítko jako čtvrtek 31. prosince 2020 v 19:00:00, protože New York byl toho dne o pět hodin pozadu za UTC.
Časové razítko může být také záporné, což představuje datum před rokem 1970. Například -86400 označuje přesně jeden den před epochou: 31. prosince 1969 v 00:00:00 UTC.
Přesnost časového razítka: sekundy, milisekundy a mikrosekundy
Ne každý systém měří čas v sekundách. Tento převaděč zjistí počet číslic časového razítka a odhadne jeho přesnost:
| Počet číslic | Přesnost | Příklad |
|---|---|---|
| 10 | Sekundy | 1609459200 |
| 13 | Milisekundy | 1609459200000 |
| 16 | Mikrosekundy | 1609459200000000 |
Záporné časové razítko má kvůli znaménku minus o jeden znak navíc, takže -1609459200 (11 znaků, 10 číslic) se stále čte jako počet sekund. Jakýkoli jiný počet číslic se považuje za sekundy. Hodnoty v milisekundách a mikrosekundách se před použitím výše uvedeného vzorce pro sekundy dělí číslem 1 000 nebo 1 000 000.
Formát času 12 hodin a 24 hodin
Převaděč nabízí dva způsoby zobrazení denní doby.
- Formát 24 hodin počítá hodiny od 0 do 23 bez označení AM nebo PM. Programátoři mu někdy říkají vojenský čas. Odpolední čas 3:00 se zapisuje jako 15:00.
- Formát 12 hodin počítá hodiny od 1 do 12 a pro dobu od půlnoci do poledne přidává AM, zatímco pro dobu od poledne do půlnoci přidává PM. Čas 15:00 ve formátu 24 hodin se zapíše jako 3:00 PM.
Formát 24 hodin je standardem ve většině Evropy, Latinské Ameriky a Asie a také ve vědeckém, vojenském a zdravotnickém prostředí po celém světě. Formát 12 hodin zůstává běžný pro každodenní použití ve Spojených státech, Kanadě a několika dalších anglicky mluvících zemích.
Podporovaný rozsah dat
Tento převaděč přijímá libovolné časové razítko od -62135596800 do 253402300799. To zahrnuje všechna data od 1. ledna roku 1 do 31. prosince 9999 v proleptickém gregoriánském kalendáři, tedy v moderním kalendáři zpětně rozšířeném před jeho zavedení v roce 1582. Časová razítka mimo tento rozsah jsou odmítnuta s chybou rozsahu.
Problém roku 2038
Mnoho starších počítačových systémů ukládá unixové časové razítko jako celé číslo se znaménkem o velikosti 32 bitů, které může počítat pouze do hodnoty 2 147 483 647. Tento počet sekund po epoše připadá na 19. ledna 2038 v 03:14:07 UTC. Po tomto okamžiku se neaktualizovaný systém o velikosti 32 bitů přetočí zpět k zápornému číslu a interpretuje datum jako rok 1901 místo roku 2038. Tento jev se označuje jako problém roku 2038. Netýká se všech systémů: moderní software, který ukládá časová razítka jako čísla o velikosti 64 bitů nebo jako běžná čísla, podobně jako JavaScript, dokáže reprezentovat data o tisíce let vzdálenější než rok 2038, aniž by došlo k přetečení.
Běžné použití unixových časových razítek
Unixová časová razítka se používají v celém světě výpočetní techniky, protože jsou úsporná a snadno se porovnávají nebo řadí:
- Řádky databází je používají k zaznamenání, kdy byl záznam vytvořen nebo naposledy změněn.
- Webové servery je používají v hlavičkách HTTP a souborech cookie k řízení ukládání do mezipaměti a platnosti.
- Soubory protokolů opatřují každou událost jedním časovým razítkem, takže lze záznamy seřadit.
- Git a další systémy pro správu verzí tímto způsobem zaznamenávají časy potvrzení změn.
- Webová API je používají k označení okamžiku, kdy byla data vygenerována nebo naposledy aktualizována.
Často kladené otázky
Co je unixová epocha? Unixová epocha je půlnoc UTC dne 1. ledna 1970. Jde o nulový bod, od kterého se počítají všechna unixová časová razítka.
Zahrnuje unixové časové razítko přestupné sekundy? Ne. Unixový čas počítá přesně 86 400 sekund za den a ignoruje přestupné sekundy, které se občas přidávají k UTC, takže se mírně rozchází s astronomickým časem.
Může být unixové časové razítko záporné? Ano. Záporná hodnota představuje datum před 1. ledna 1970.
Proč má moje časové razítko 13 číslic místo 10?
Časové razítko s 13 číslicemi se měří v milisekundách, nikoli v sekundách. Metoda JavaScriptu Date.now() a mnoho webových API vrací časová razítka v milisekundách, proto jsou hodnoty s 13 číslicemi ve vývoji webu běžné.
Je unixové časové razítko stejné ve všech časových pásmech? Samotné číslo není spojeno s žádným časovým pásmem. Vždy počítá sekundy od epochy v UTC. Převod na místní datum a čas znamená přičtení posunu daného pásma, proto výstup tohoto převaděče odpovídá časovému pásmu zařízení, na kterém běží.
Jaké nejzazší datum tento převaděč zvládne? 31. prosince 9999 v 23:59:59 UTC, kterému odpovídá časové razítko 253402300799. Nejranější datum je 1. ledna roku 1 v 00:00:00 UTC, kterému odpovídá časové razítko -62135596800.