Šta je Unix vreme?
Unix vreme (poznato i kao Epoha, POSIX vreme ili Unix vremenski žig) je sistem za opisivanje tačke u vremenu. To je broj sekundi koje su prošle od Unix epohe, koja je definisana kao 00:00:00 UTC u četvrtak, 1. januara 1970. godine. Široko se koristi u Unix-like operativnim sistemima i mnogim drugim računarskim sistemima.
Ključna prednost Unix vremena je njegova jednostavnost. Predstavlja vreme kao jedan, univerzalno razumljiv ceo broj koji se neprestano povećava. Ovo ga čini izuzetno jednostavnim za skladištenje, poređenje i izvođenje kalkulacija sa vremenskim oznakama bez brige o vremenskim zonama, letnjem računanju vremena ili različitim kalendarskim sistemima. Na primer, da biste pronašli trajanje između dva događaja, jednostavno oduzimate njihove Unix vremenske oznake.
Iako je ovaj sirovi broj savršen za računare, nije baš prijateljski za ljude. Da bi se premostila ta razlika, programeri i tehnološki entuzijasti koriste alat nazvan konvertor epohe. Možete ga koristiti za trenutno pretvaranje bilo koje vremenske oznake u čitljiv datum ili za obrnuto pretvaranje pronalaženjem vremenske oznake za određeni datum.
Problem 2038. godine
Dobro poznat problem vezan za Unix vreme je "Problem 2038. godine". Slično je problemu Y2K. Mnogi rani računarski sistemi su dizajnirani da skladište Unix vremensku oznaku kao potpisani 32-bitni ceo broj. Potpisani 32-bitni ceo broj može da predstavlja vrednosti od -2.147.483.648 do 2.147.483.647.
Maksimalna vrednost, 2.147.483.647, biće dostignuta u 03:14:07 UTC 19. januara 2038. Nakon tog sekunda, ceo broj će preći granicu i preći u najnižu vrednost, što će računarski sistemi interpretirati kao datum u 1901. godini. Ovo bi moglo izazvati široke kvarove u starijem softveru koji se oslanja na 32-bitne vremenske reprezentacije.
Rešenje je korišćenje 64-bitnog celog broja za skladištenje vremenske oznake. 64-bitni ceo broj ima maksimalnu vrednost tako veliku da neće preći granicu za otprilike 292 milijarde godina, efektivno rešavajući problem za budućnost. Većina modernih operativnih sistema i softvera već je prešla na 64-bitne vremenske reprezentacije.
Prelazne sekunde i Unix vreme
Jedan važan tehnički detalj je da Unix vreme ne računa prestupne sekunde. Dok UTC (Koordinisano svetsko vreme) povremeno dodaje prestupnu sekundu da bi održao usklađenost sa rotacijom Zemlje, Unix vremenski žig ih jednostavno ignoriše i nastavlja da broji linearnu liniju.
To znači da Unix vreme nije pravi prikaz UTC-a. Umesto toga, tačnije je opisati ga kao linearnu brojčanu vrednost sekundi. Kada se dogodi prestupna sekunda, Unix vreme ponekad ponovi sekundu da bi ostao usklađen. Ova nijansa je kritična za naučne i visokoprecizne primene, ali za većinu opšteupotrebljivog računarskog softvera razlika je zanemarljiva.
Uobičajene upotrebe Unix vremena
- Vremenske oznake fajlova: Operativni sistemi koriste Unix vremenske oznake za praćenje kada su fajlovi kreirani, modifikovani ili poslednji put pristupili.
-
Baze podataka:
Često je efikasan način za skladištenje informacija o datumu i vremenu za zapise (npr.
created_at,updated_at). - API i veb razvoj: Koristi se za isteka sesije, kontrolu keširanja i evidentiranje API zahteva.
- Programiranje: Gotovo svaki programski jezik pruža funkcije za dobijanje trenutnog Unix vremenskog žiga i njegovo pretvaranje u i iz čitljivih formata datuma.