Egy Unix-időbélyeg értelmezéséhez először a mértékegységet kell ismerned. Másodperc és milliszekundum között ezerszeres a különbség. Ha rossz egységben olvasod be az adatot, az eredmény egészen más évre eshet, vagy kívül kerülhet az alkalmazás kezelhető tartományán. Ez gyakori importhiba, amelyet az időzóna állítgatása nem fog megoldani.
Mihez képest számoljuk az időt?
A Unix-idő alapja az 1970. január 1. 00:00:00 UTC kezdőpillanat. A böngészők JavaScript Date objektuma ehhez képest milliszekundumban tárolja az időt; a szökőmásodperceket figyelmen kívül hagyja. A működést az MDN Date dokumentációja foglalja össze.
Az alapátváltás egyszerű:
Milliszekundum = másodperc × 1 000.
Másodperc = milliszekundum / 1 000.
A napló vagy API mezőjének leírása dönti el, melyik egységet kapod. A számjegyek száma hasznos gyanújel, de önmagában nem formátumleírás. Régi dátum, jövőbeli dátum és negatív érték is megváltoztathatja a szám hosszát.
Egy teljes, ellenőrizhető példa
Szemléltető példánk kezdőpillanata 2026. január 1. 00:00:00 UTC. Ehhez 1 767 225 600 másodperces időbélyeg tartozik. Milliszekundumban ugyanez:
1 767 225 600 × 1 000 = 1 767 225 600 000 ms.
Ha ehhez 90 500 milliszekundumot adunk, az 90,5 másodperc, vagyis 1 perc 30,5 másodperc. Az új érték 1 767 225 690 500 ms, a megjelenített UTC idő pedig 00:01:30,500. A tört másodpercet csak akkor kerekítsd el, ha a célrendszer valóban egész másodperceket fogad.
A Unix timestamp átváltóban ezzel a kezdőértékkel ellenőrizheted a kapott dátumot. A beviteli egységet és az eredményhez tartozó időzónajelölést együtt olvasd. Másik rendszerbe a szám mellett az egységet is vidd tovább.
Ugyanaz a pillanat más órát mutathat
A fenti kezdőpillanat rögzített UTC+01:00 eltolással 2026. január 1. 01:00:00-ként jelenik meg. A tárolt időbélyeg változatlan. A kijelzett óra attól függ, melyik időzónában vagy rögzített eltolással alakítod naptári dátummá.
Egy önmagában álló „2026-01-01 00:00” szöveg ezzel szemben hiányos lehet: a fogadó félnek tudnia kell, milyen időzónában értendő. Az RFC 3339 időbélyeg-formátuma a dátumhoz és időhöz UTC-jelölést vagy számszerű eltolást társít. Adatcserénél az ilyen egyértelmű jelölés segít megelőzni a többórás eltérést.
Időtartam két időbélyegből
Azonos egységű időbélyegeket vonj ki egymásból. Ha a különbség 7 200 000 ms, akkor 7 200 000 / 1 000 = 7 200 másodperc, majd 7 200 / 3 600 = 2 óra. A kijelzett helyi órák kivonása óraátállítás közelében eltérő eredményt adhat; az időpontok különbsége a célodhoz illőbb kiindulás.
A 86 400 másodperces hozzáadás pontos időtartamot jelent ebben a modellben. Egy helyi naptári nap vagy egy naptári hónap hozzáadása külön művelet. Egy hónapra ezért ne használj minden helyzetben azonos másodpercszámot.
Négy adat az import ellenőrzéséhez
Jegyezd fel az eredeti számot, az egységét, az elvárt UTC időpontot és a kívánt helyi megjelenítést. Először egyetlen ismert sorral próbáld ki az átalakítást. Ha ez jó, nézz meg egy napváltás környéki sort is.
A negatív időbélyeg önmagában érvényes lehet: a kezdőpillanat előtti időt jelölheti. A nulla a konkrét kezdőpillanatot jelöli. Egy adatbázis üres mezőjét ezért ne cseréld automatikusan nullára, mert ezzel egy valótlan, 1970-es dátumot hoznál létre.