Čo je Unix čas?
Unix čas (známy aj ako Epoch čas, POSIX čas alebo Unix timestamp) je systém na opisovanie bodu v čase. Je to počet sekúnd, ktoré uplynuli od Unix Epochu, definovaného ako 00:00:00 UTC vo štvrtok 1. januára 1970. Je široko používaný v Unixových operačných systémoch a mnohých ďalších výpočtových systémoch.
Hlavnou výhodou Unix času je jeho jednoduchosť. Predstavuje čas ako jedno, univerzálne pochopiteľné celé číslo, ktoré neustále rastie. To umožňuje veľmi jednoduché ukladanie, porovnávanie a vykonávanie výpočtov s časovými značkami bez obáv o časové pásma, letný čas alebo rôzne kalendárne systémy. Napríklad, na zistenie trvania medzi dvoma udalosťami, jednoducho odpočítate ich Unixové časové značky.
Hoci je toto surové číslo ideálne pre počítače, nie je veľmi priateľské pre ľudí. Na preklenutie tejto medzery používajú vývojári a technickí nadšenci nástroj nazývaný konvertor epoch. Môžete ho použiť na okamžitú konverziu akejkoľvek časovej značky na čitateľný dátum alebo naopak, nájdenie časovej značky pre konkrétny dátum.
Problém roku 2038
Dobrý známy problém súvisiaci s Unix časom je "Problém roku 2038". Je podobný povahu ako Y2K problém. Mnohé staré počítačové systémy boli navrhnuté na ukladanie Unixovej časovej značky ako 32-bitové znamienkové celé číslo. Znamienkové 32-bitové celé číslo môže reprezentovať hodnoty od -2 147 483 648 do 2 147 483 647.
Maximálna hodnota, 2 147 483 647
, bude dosiahnutá o 03:14:07 UTC dňa 19. januára 2038. O sekundu neskôr sa celé číslo pretečie a zabalí na svoju najnižšiu hodnotu, čo bude systémom interpretované ako dátum v roku 1901. To by mohlo spôsobiť rozsiahle zlyhania staršieho softvéru, ktorý závisí od 32-bitových časových reprezentácií.
Riešením je použiť 64-bitové celé číslo na uloženie časovej značky. 64-bitové celé číslo má maximálnu hodnotu tak veľkú, že sa nepretečie približne za 292 miliárd rokov, čím efektívne rieši problém na nepredvídateľnú budúcnosť. Väčšina moderných operačných systémov a softvéru už prešla na 64-bitové časové reprezentácie.
Pridané sekundy a Unix čas
Dôležitým technickým detailom je, že Unix čas nezohľadňuje pridanie sekúnd na skok. Hoci UTC (Koordinovaný svetový čas) občas pridá sekundu na skok, aby udržal naše hodiny v súlade s rotáciou Zeme, Unix timestamp ich jednoducho ignoruje a pokračuje v počítaní lineárne.
To znamená, že Unix čas nie je skutočným zobrazením UTC. Namiesto toho je presnejšie opísať ho ako lineárny počet sekúnd. Keď nastane skoková sekunda, Unix čas niekedy opakuje sekundu, aby zostal synchronizovaný. Táto nuancia je kritická pre vedecké a vysokorýchlostné aplikácie, ale pre väčšinu všeobecných výpočtov je rozdiel zanedbateľný.
Bežné použitia Unix času
- Časové značky súborov: Operačné systémy používajú Unixové časové značky na sledovanie, kedy boli súbory vytvorené, upravené alebo naposledy otvorené.
-
Databázy:
Je to bežný a efektívny spôsob ukladania dátumu a času pre záznamy (napríklad
created_at
,updated_at
). - API a webový vývoj: Používa sa na vypršanie platnosti relácií, kontrolu cache a zaznamenávanie API požiadaviek.
- Programovanie: Takmer každý programovací jazyk poskytuje funkcie na získanie aktuálneho Unixového časového údaja a jeho konverziu na a z čitateľných formátov dátumu.