Kaj je to orodje?
Unix časovni žig (imenovan tudi epoch čas) je število sekund, ki so pretekle od 1. januarja 1970, 00:00:00 UTC. To je standarden način, kako računalniki shranjujejo časovne točke: podatkovne baze, dnevniške datoteke, API-ji in programski jeziki ga vsi uporabljajo, ker je to eno samo nedvoumno število brez zmede glede časovnih pasov.
Obstajata dve različici: sekunde (danes 10 mest, npr. 1720500000) in milisekunde (13 mest, uporablja jih JavaScript in Java). To orodje samodejno zazna, katero si prilepil.
Zakaj ga uporabiti?
- Takoj preberi časovne žige iz dnevnikov, vrstic podatkovnih baz in odgovorov API-jev.
- Samodejno zazna sekunde ali milisekunde — brez ugibanja.
- Skupaj prikaže lokalni čas, UTC, ISO 8601 in relativni čas ("pred 3 urami").
- Pretvorba v obe smeri: časovni žig → datum in datum → časovni žig.
- Živa ura trenutne epohe za hiter vpogled.
Kako ga uporabljati
- Za dekodiranje: prilepi časovni žig (kot 1720500000) v levo polje in klikni "Pretvori".
- Preberi rezultat v svojem lokalnem časovnem pasu, UTC, ISO 8601 in kot relativni čas.
- Za kodiranje: izberi datum in čas v desnem polju in klikni "Pretvori", da dobiš njegov časovni žig v sekundah in milisekundah.
- Uporabi živo uro na vrhu, ko potrebuješ le trenutni časovni žig.
Primer
Vnos
1720500000Rezultat
Lokalni čas: 9. 7. 2024, 13:20:00
UTC čas: tor, 09 jul 2024 05:20:00 GMT
ISO 8601: 2024-07-09T05:20:00.000Z10-mestna vrednost se obravnava kot sekunde; 13-mestna kot milisekunde.
Praktični nasveti
- Odpravljanje napak "napačnega časa": 90 % je težav s prikazom časovnega pasu, ne napačnih časovnih žigov. Primerjaj vrstico UTC z dnevniki svojega strežnika (strežniki običajno beležijo v UTC), preden se lotiš kode.
- Datum, ki pade natanko na 1970-01-01, pomeni, da je bil časovni žig 0 ali manjkajoč — klasičen simptom ničelne vrednosti, ne resničen datum.
- Datum okoli 1970 plus nekaj dni običajno pomeni, da so bile sekunde nekje razumljene kot milisekunde; datum v letu 56.000+ pomeni obratno.
- V preglednicah: Excel šteje dneve od leta 1900, ne sekund od 1970. Pretvori z =(A1/86400)+DATE(1970,1,1) za časovni žig v sekundah.
Resnični primeri uporabe
Kje časovni žigi v praksi povzročajo težave: branje polj poteka veljavnosti v JWT-jih in API tokenih (exp/iat sta Unix sekunde), povezovanje časa uporabnikovega poročila o napaki z vrsticami dnevnika na strežniku, nastavljanje TTL predpomnilnika in oken cron opravil ter preverjanje, ali je certifikat ali token dejansko potekel. Vrstica relativnega časa ("pred 3 urami") je najhitrejši preizkus zdrave pameti za vse to.
Odpravljanje napak pri JWT-jih je dovolj pogosto, da omenim: dekodiraj vsebino tokena z orodjem Base64, nato prilepi vrednost exp sem — takojšen odgovor na "ali je ta token potekel in za koliko".
Zakaj je Unix čas zasnovan tako
Shranjevanje enega naraščajočega števila od fiksne epohe (namesto strukture leto/mesec/dan/ura) je bil namerni kompromis za preprostost: dva časovna žiga je mogoče primerjati ali odšteti s preprosto aritmetiko, brez potrebe po koledarski logiki, zato so podatkovne baze, formati dnevnikov in dejansko vsi notranji zapisi datumov v programskih jezikih zgrajeni na tem. Cena te preprostosti je natanko to, kar to orodje izravnava — ljudje ne razmišljamo v sekundah od 1970, zato je treba vsak časovni žig prevesti nazaj v koledarski datum, preden karkoli pomeni osebi, ki ga bere, ta prevod pa mora hkrati upoštevati časovni pas, natančnost (sekunde proti milisekundam) in obliko prikaza.
Pogosta vprašanja
Kako orodje ve, ali je moj časovni žig v sekundah ali milisekundah?
Po velikosti. Vrednosti 1.000.000.000.000 (1e12) ali večje se obravnavajo kot milisekunde; manjše vrednosti kot sekunde. Trenutni datumi so ~1,7 milijarde v sekundah in ~1.700 milijard v milisekundah, zato se za realistične datume ta dva razpona ne prekrivata.
Zakaj moj časovni žig prikaže drugačno uro, kot sem pričakoval?
Časovni pasovi. Časovni žig je vedno v UTC; vrstica "lokalni čas" ga pretvori v časovni pas tvoje naprave. Primerjaj vrstico UTC s tem, kar beleži tvoj izvorni sistem — mnogi strežniki beležijo v UTC.
Kaj je problem leta 2038?
Sistemi, ki shranjujejo časovne žige kot podpisana 32-bitna cela števila, se prelijejo 19. januarja 2038. Sodobni sistemi uporabljajo 64-bitna cela števila in niso prizadeti. To orodje uporablja JavaScriptova števila, ki obravnavajo datume daleč onkraj 2038.
Ali lahko pretvorim negativne časovne žige?
Da. Negativni časovni žigi predstavljajo datume pred 1. januarjem 1970 — na primer -86400 je 31. december 1969.
Ali epoha vključuje prestopne sekunde?
Ne. Unix čas predpostavlja, da ima vsak dan natanko 86.400 sekund, in prestopne sekunde ignorira — namerna poenostavitev, ki ohranja aritmetiko preprosto.