← Összes eszköz

Unix Timestamp Konverter

Alakíts Unix timestampeket dátumokká és vissza azonnal a böngésződben. Ismerd meg az epoch időt, másodperceket és milliszekundumokat, UTC buktatókat és a 2038-as problémát.

Unix időbélyegek fejfájás nélkül

Kérdezz meg három fejlesztőt, hány óra van, és lehet, hogy három választ kapsz, attól függően, hol ülnek éppen. Kérdezz meg egy Unix időbélyeget, és pontosan egy számot kapsz, ugyanazt mindenki számára a bolygón. Ez az egyetlen egész szám az oka annak, hogy az epoch idő csendben szinte minden naplófájl, adatbázissor és API-válasz alapját képezi, amivel valaha is találkozol. Ez az oldal elmagyarázza, mit jelent ez a szám, hogyan olvasható mindkét irányban, és hol szokott bajt okozni.

Izzó óra, amely fényből álló számjegyek folyamává oldódik, a Unix epoch időt megjelenítve
Az epoch idő egyetlen, 1970 óta előrehaladó számláló.

Mi is valójában a Unix idő

Egy Unix időbélyeg az eltelt másodpercek száma 1970. január 1. 00:00:00 UTC óta, a szökőmásodperceket nem számítva. Ezt a pillanatot epochnak nevezik, és a korai Unix mérnökök egyszerűen azért választották, mert kényelmes, kerek dátum volt a számolás kiindulópontjának. Az epochnál az érték pontosan 0. Minden azóta eltelt másodperc eggyel növeli, így a szám csak nő. Az 1970 előtti dátumok is teljesen érvényesek, negatív egész számokként kifejezve.

Ezt a fogalmat POSIX időnek, vagy lazábban epoch időnek is hívják. Bármi is a neve, a mechanika ugyanaz: egy folyamatosan növekvő másodperc-számláló. Mivel ez egy sima egész szám, nem egy formázott karakterlánc, egy számítógép néhány byte-on tárolhatja, és két ilyen értéket egyetlen kivonással tud összehasonlítani.

Másodpercek, ezredmásodpercek és rokonaik

A klasszikus Unix idő teljes másodperceket számol, ami a ma is ismerős tízjegyű számot adja. De sok környezetnek finomabb felbontásra van szüksége. A JavaScript például ezredmásodpercekben dolgozik, ami egy tizenháromjegyű értéket eredményez, néhány rendszer pedig egészen mikroszekundumig vagy nanoszekundumig megy tovább. Egy megbízható ökölszabály: a tízjegyű szám másodperc, a tizenháromjegyű ezredmásodperc. Ha az átalakított dátumod valahol 1970 körül landol, miközben a mai napot vártad, szinte biztosan ezredmásodpercet adtál meg egy másodperc-mezőben, vagy fordítva. A mi konverterünk automatikusan felismeri a nagyságrendet, így ritkán kell találgatnod.

Miért támaszkodnak rá a fejlesztők

A nagy előny az, hogy egy időbélyeg időzóna-független. Az 1735689600 egész szám ugyanazt a pillanatot jelöli Tokióban, Berlinben és São Paulóban is. Ha ezt a számot tárolod egy formázott helyi karakterlánc helyett, soha nem kell azon töprengened, melyik órához tartozott egy érték. A rendezés is triviális, mert az időrendi sorrend egyszerűen numerikus sorrend, így egy időbélyeg-oszlopra épített adatbázisindex feldolgozás nélkül helyesen rendezi az eseményeket. A műveletek is éppilyen tiszták: két esemény közötti különbség egyetlen kivonás, egy nap hozzáadása pedig 86400 hozzáadása. Ezek a tulajdonságok az oka annak, hogy a naplók, tokenek, gyorsítótárak és üzenetsorok mind az epoch időhöz nyúlnak.

Átalakítás mindkét irányba

Az időbélyegből ember számára olvasható dátummá alakítás azt jelenti, hogy a másodpercek számát rávetíted egy naptárra, majd az eredményt megformázod a kívánt időzónában. A másik irányban egy évet, hónapot, napot és időpontot veszel, eldöntöd, melyik időzónában van kifejezve, és összenyomod epoch óta eltelt másodpercekké. Eszközünk mindkét irányt azonnal és teljes egészében a böngésződben végzi el, így semmi, amit beillesztesz, nem hagyja el a gépedet. Illessz be egy számot a dekódoláshoz, vagy válassz egy dátumot a kódoláshoz, és olvasd le az eredményt egyszerre UTC-ben és a helyi időben is.

Izzó idővonal-szalag egy jelölővel, amely egy áramló epoch másodperc-folyam mentén csúszik
Egy jelölő egy idővonalon, amely egyszerre olvasható UTC-ként és helyi időként is.

UTC versus helyi idő, a klasszikus csapda

Magának az időbélyegnek nincs időzónája; mindig UTC-hez van rögzítve. A zavar csak akkor jelenik meg, amikor megjeleníted. Ha átalakítod az 1700000000 értéket, és a képernyőd esti órát mutat, míg egy másik ország kollégája délutánt lát, nincs semmi hiba, egyszerűen ugyanazt a pillanatot nézitek, csak eltérő helyi órákban megjelenítve. A hibák akkor jelennek meg, amikor a kód egy helyi dátumot úgy olvas be, mintha UTC lenne, vagy egy fali órás időt eltolás rögzítése nélkül bélyegez le. A biztonságos szokás az, hogy UTC-t tárolsz és továbbítasz, és csak a legvégső pillanatban, amikor az értéket egy embernek mutatod, alkalmazol helyi eltolást. Ha kétségeid vannak, hasonlítsd össze a konverter UTC sorával, ne a helyi idővel.

A 2038-as probléma

Sok régebbi rendszer előjeles 32 bites egész számban tárolta a Unix időt. Ez a mező 2038. január 19-én, 03:14:07 UTC után egy másodperccel elfogy, amikor a számláló túlcsordul, és negatív számra ugrik vissza, ami akár 1901-be is visszavetheti a dátumokat. Ez ugyanabba a hibacsaládba tartozik, mint a Y2K. A jó hír az, hogy a modern operációs rendszerek és nyelvek jórészt már 64 bites időbélyegekre álltak át, amelyek nagyjából 292 milliárd évig nem csordulnak túl, így az új kódok esetében ez inkább történelmi érdekesség, mint sürgős probléma.

További böngészőalapú segédeszközökért nézd meg fejlesztői eszközeinket, és ha magukkal a számokkal kell dolgoznod, a kalkulátorok is egy kattintásnyira vannak.

Gyakran ismételt kérdések

Mi az a Unix időbélyeg?

Az 1970. január 1. 00:00:00 UTC óta eltelt másodpercek száma, a szökőmásodperceket nem számítva. Ezt a kezdő pillanatot epochnak hívják, és a számláló csak nő az idő múlásával.

Miért alakul át a számom egy 1970 körüli dátummá?

Valószínűleg összekeverted a másodperceket és az ezredmásodperceket. A tízjegyű szám másodperc, a tizenháromjegyű szám ezredmásodperc. Ha ezredmásodpercet adsz meg egy másodperc-mezőben, az látszólagos időt körülbelül ezredrészére csökkenti, közel az epochhoz.

Van időzónája egy Unix időbélyegnek?

Nem. Az érték mindig UTC-hez van rögzítve. Az időzóna csak akkor jön a képbe, amikor az időbélyeget ember által olvasható dátumként jelenítik meg, ezért mutathatja ugyanaz a szám különböző embereknek eltérő fali órás időt.

Hogyan alakítok vissza egy dátumot időbélyeggé?

Add meg az évet, a hónapot, a napot és az időpontot, döntsd el, melyik időzónában van kifejezve az adott dátum, és az eszköz epoch óta eltelt másodpercekké nyomja össze. Mindkét irányt azonnal, a böngésződben elvégezheted ezen az oldalon.

Mi a 2038-as probléma?

Azok a rendszerek, amelyek előjeles 32 bites egész számban tárolják a Unix időt, 2038. január 19-én 03:14:07 UTC után egy másodperccel túlcsordulnak. A modern 64 bites időbélyegek több milliárd évig elkerülik ezt, így a legtöbb mai szoftvert nem érinti.

Elküldi az adatomat egy szervernek?

Nem. Az átalakítás teljes egészében a böngésződben zajlik, így minden időbélyeg vagy dátum, amit beillesztesz, a saját eszközödön marad.