Utilia

Unix laiko žymos keitiklis

Konvertuok Unix laiko žymas sekundėmis ar milisekundėmis į skaitomas datas vietiniu laiku, UTC ir ISO 8601 formatu ir atgal į epoch laiką.

Dabartinė laiko žyma
–

Laiko žyma → data

Vietinis laikas
–
UTC
–
ISO 8601
–

Data → laiko žyma

Sekundės
–
Milisekundės
–

Kaip naudotis Unix laiko žymos keitikliu

  1. Norint paversti laiko žymą data, įklijuok epoch reikšmę, pavyzdžiui, 1700000000 ar 1700000000000. Įrankis pagal dydį aptinka, ar tai sekundės, ar milisekundės.
  2. Perskaityk rezultatą savo vietinėje laiko juostoje, UTC ir ISO 8601 formatu.
  3. Norint konvertuoti atvirkščiai, įvesk datą ir laiką; įrankis grąžina atitinkamą epoch reikšmę ir sekundėmis, ir milisekundėmis.
  4. Viršuje žvilgtelėk į dabartinę laiko žymą, kuri atsinaujina gyvai, kai reikia „dabar“ kaip epoch reikšmės.

Kas yra Unix laiko žyma?

Unix laiko žyma, dar vadinama epoch laiku ar POSIX laiku, yra sekundžių skaičius, praėjęs nuo Unix epochos: 1970 m. sausio 1 d. 00:00:00 UTC. Pavyzdžiui, 1700000000 atitinka 2023 m. lapkričio 14 d. 22:13:20 UTC. Datos iki 1970 m. vaizduojamos neigiamais skaičiais.

Laiko žymos populiarios tarp programuotojų, nes tai vienas skaičius, nepriklausantis nuo laiko juostų, vasaros laiko ar datos formatų. Dviejų momentų palyginimas yra paprasta atimtis, o rūšiavimas pagal laiką – paprastas skaičių rūšiavimas. Rasi jas duomenų bazėse, žurnalų failuose, API atsakymuose, JWT laukuose, tokiuose kaip exp ir iat, failų metaduomenyse ir cron tipo planuokliuose.

Atkreipk dėmesį, kad Unix laikas nepaiso keliamųjų sekundžių: kiekviena para skaičiuojama kaip lygiai 86 400 sekundžių. Taip aritmetika išlieka paprasta, todėl laiko žyma nėra tikslus kiekvienos fizinės sekundės nuo 1970 m. skaičius.

Sekundės ar milisekundės

Dažniausias painiavos šaltinis yra vienetas. Tradicinės Unix sistemos, PHP, Python time.time() ir dauguma duomenų bazių naudoja sekundes, o tai šiandien duoda 10 skaitmenų skaičių. JavaScript Date.now(), Java System.currentTimeMillis() ir daugelis JSON API naudoja milisekundes, o tai duoda 13 skaitmenų skaičių. Milisekundes palaikius sekundėmis, atsidursi dešimtis tūkstančių metų ateityje; sekundes palaikius milisekundėmis, atsidursi 1970 m. sausį. Šis įrankis pagal skaičiaus dydį automatiškai parenka tinkamą vienetą, o konvertuodamas datą parodo abi reikšmes, kad nukopijuotum tą, kurios tikisi tavo sistema.

Vietinis laikas, UTC ir ISO 8601

Laiko žyma nurodo vieną tikslų momentą, bet tas momentas skirtingose laiko juostose rodomas skirtingai. Vietinis rezultatas naudoja tavo įrenginyje nustatytą laiko juostą, o UTC yra universalus atskaitos taškas, naudojamas serveriuose ir žurnaluose. ISO 8601, pavyzdžiui, 2023-11-14T22:13:20.000Z, yra nedviprasmiškas teksto formatas, rekomenduojamas datoms keisti tarp sistemų; galinis Z reiškia UTC.

2038 metų problema

Daugelis senesnių sistemų Unix laiką saugo kaip 32 bitų sveikąjį skaičių su ženklu, kurio didžiausia reikšmė yra 2 147 483 647. Ši riba pasiekiama 2038 m. sausio 19 d. 03:14:07 UTC. Po sekundės toks skaitiklis persipildo į didelį neigiamą skaičių ir skaitomas kaip 1901 m. gruodžio data. Šiuolaikinės operacinės sistemos, duomenų bazės ir kalbos daugiausia perėjo prie 64 bitų laiko reikšmių, kurios ribą nustumia milijardus metų į ateitį, bet įterptiniai įrenginiai, senieji failų formatai ir seni duomenų bazių stulpeliai vis dar gali būti paveikti. Pati JavaScript nepaveikta, nes laiką saugo kaip milisekundes 64 bitų slankiojo kablelio skaičiuje.

Privatumas

Visi konvertavimai vyksta tavo naršyklėje naudojant jos įtaisytas datos funkcijas. Jokios laiko žymos ar datos nesiunčiamos į serverį.

Dažnai užduodami klausimai

Kaip sužinoti, ar mano laiko žyma yra sekundėmis, ar milisekundėmis?

Suskaičiuok skaitmenis. Dabartinė data sekundėmis yra 10 skaitmenų, o milisekundėmis – 13. Įrankis tą pačią logiką taiko automatiškai pagal skaičiaus dydį.

Kodėl vietinis laikas skiriasi nuo UTC?

Abu aprašo tą patį momentą. Vietinis laikas taiko tavo įrenginio laiko juostos poslinkį ir vasaros laiko taisykles, o UTC poslinkio neturi. Jei dalijiesi laiku su žmonėmis kitur, UTC ar ISO 8601 padeda išvengti nesusipratimų.

Ar Unix laiko žyma gali būti neigiama?

Taip. Neigiamos reikšmės reiškia momentus iki 1970 m. sausio 1 d. UTC. Pavyzdžiui, -86400 yra 1969 m. gruodžio 31 d. 00:00:00 UTC.

Ar Unix laiko žymoje yra laiko juosta?

Ne. Laiko žyma visada nurodoma UTC atžvilgiu ir laiko juostos informacijos neturi. Laiko juosta svarbi tik tada, kai ją rodai kaip kalendorinę datą ir laiką.

Ar mano sistemos sulūš 2038 metais?

Tik jei jos saugo laiką 32 bitų sveikajame skaičiuje su ženklu. Patikrink senesnes duomenų bazes, įterptinę programinę įrangą ir dvejetainius failų formatus. Viskas, kas naudoja 64 bitų laiką, artimiausioje ateityje saugu.