Původ Unix time
Abychom epoch razítko — často nazývané Unix time, POSIX time nebo prostě epoch — opravdu pochopili, musíme se vrátit k počátkům operačního systému Unix na začátku 70. let. Unix time sleduje čas jako běžící součet sekund. Konkrétně představuje počet sekund, které uplynuly od Unix epoch. Samotná epocha je definována jako 00:00:00 Coordinated Universal Time (UTC) ve čtvrtek 1. ledna 1970.
Když Ken Thompson a Dennis Ritchie vyvíjeli první verze Unixu v Bell Labs, potřebovali jednoduchý a efektivní způsob, jak počítače reprezentují a ukládají data a časy. Lidsky čitelná data (jako „29. července 2026“) jsou pro počítače extrémně složitá: nepravidelné měsíce (28, 29, 30 nebo 31 dní), přestupné roky, časové zóny a přechody na letní čas. Tím, že čas vyjádřili jediným, nepřetržitě narůstajícím celým číslem, vytvořili univerzální a jednoznačný časový standard, který lze snadno ukládat, porovnávat a matematicky manipulovat.
Proč vývojáři používají epoch razítka dodnes
I po desetiletích zůstává Unix time páteří moderní výpočetní infrastruktury. Důvody univerzálního přijetí:
- Jednoduchost a efektivita: Uložení 32bitového nebo 64bitového integeru zabere podstatně méně místa na disku i v paměti než formátovaný řetězec data. Když databáze obsahují miliardy záznamů, ušetřené bajty na řádek znamenají masivní snížení nákladů na úložiště a rychlejší indexy.
- Nezávislost na časové zóně: Epoch razítko je inherentně vázané na UTC. Nezáleží, kde uživatel fyzicky je. Když server v Tokiu komunikuje s klientem v New Yorku, přenos epoch integeru zabrání zmatkům ohledně časových zón. Klient integer po přijetí jen převede do své místní zóny.
- Snadné matematické operace: Trvání mezi dvěma událostmi spočítáte odečtením jednoho razítka od druhého. Kolik sekund uplynulo mezi dvěma záznamy v logu?
timestamp2 - timestamp1dá přesnou odpověď okamžitě, bez složitého parsování data. - Řazení v databázi: Chronologické řazení záznamů podle integer sloupce je pro databázové enginy výrazně rychlejší než parsování a řazení textových razítek.
Dopad přestupných sekund
Technická nuance Unix time spočívá v tom, jak zachází s přestupnými sekundami. Přestupná sekunda je jednosekundová úprava, která se občas aplikuje na Coordinated Universal Time (UTC), aby denní čas zůstal blízko střednímu slunečnímu času. Unix time přestupné sekundy nezohledňuje. V systému Unix time je každý den považován za přesně 86 400 sekund. Když nastane přestupná sekunda, Unix hodiny v podstatě zopakují tutéž sekundu dvakrát. Toto záměrné rozhodnutí brání nepředvídatelnosti razítek, zároveň ale znamená, že Unix time není striktně lineární mírou fyzického času od roku 1970. Pro naprostou většinu softwarových aplikací je tato drobná odchylka zcela přijatelná a výhodnější než složitost evidence každé historické přestupné sekundy.