CodeKitHub
Laika rīki

Unix laika zīmoga pārveidotājs

Pēdējoreiz atjaunināts:

Unix laika zīmogs skaita sekundes, kas pagājušas kopš 1970. gada 1. janvāra plkst. 00:00:00 UTC — piemēram, laika zīmogs 1 000 000 000 iekrita 2001. gada 9. septembrī. Pārveido Unix laika zīmogu par lasāmu datumu vai izvēlies datumu un iegūsti tā laika zīmogu. Rīks automātiski nosaka, vai skaitītas sekundes vai milisekundes, rāda vietējo laiku, UTC un ISO 8601, un augšpusē rāda dzīvu, tikšķošu epohas laika pulksteni.

Current timestamp (seconds)
Current timestamp (milliseconds)

Timestamp → Date

Date → Timestamp

Kas ir šis rīks?

Unix laika zīmogs (saukts arī par epohas laiku) ir sekunžu skaits, kas pagājis kopš 1970. gada 1. janvāra plkst. 00:00:00 UTC. Tas ir standarta veids, kā datori glabā laika punktus: datubāzes, žurnālfaili, API un programmēšanas valodas visas to izmanto, jo tas ir viens nepārprotams skaitlis bez laika joslas neskaidrībām.

Pastāv divi varianti: sekundes (šodien 10 cipari, piem., 1720500000) un milisekundes (13 cipari, ko izmanto JavaScript un Java). Šis rīks automātiski nosaka, kuru no tiem esi ielīmējis.

Kāpēc to izmantot?

  • Nolasi laika zīmogus no žurnāliem, datubāzu ierakstiem un API atbildēm uzreiz.
  • Automātiski nosaka sekundes vai milisekundes — nekāda minēšana.
  • Vienlaikus rāda vietējo laiku, UTC, ISO 8601 un relatīvo laiku ("pirms 3 stundām").
  • Konvertē abos virzienos: laika zīmogs → datums un datums → laika zīmogs.
  • Dzīvs pašreizējās epohas pulkstenis ātrai atsaucei.

Kā to lietot

  1. Lai atkodētu: ielīmē laika zīmogu (piemēram, 1720500000) kreisajā laukā un uzklikšķini "Pārveidot".
  2. Izlasi rezultātu savā vietējā laika joslā, UTC, ISO 8601 un kā relatīvu laiku.
  3. Lai kodētu: izvēlies datumu un laiku labajā laukā un uzklikšķini "Pārveidot", lai iegūtu tā laika zīmogu sekundēs un milisekundēs.
  4. Izmanto dzīvo pulksteni augšpusē, kad tev vajag tikai pašreizējo laika zīmogu.

Piemērs

Ievade

1720500000

Izvade

Vietējais laiks: 09.07.2024, 13:20:00
UTC laiks: otrd., 09.07.2024 05:20:00 GMT
ISO 8601: 2024-07-09T05:20:00.000Z

10 ciparu vērtība tiek uzskatīta par sekundēm; 13 ciparu vērtība — par milisekundēm.

Praktiski padomi

  • Atkļūdojot "nepareiza laika" kļūdas: 90% ir laika joslas attēlošanas problēmas, nevis nepareizi laika zīmogi. Salīdzini UTC rindu ar sava servera žurnāliem (serveri parasti reģistrē UTC), pirms ķeries pie koda.
  • Datums, kas iekrīt tieši 1970-01-01, nozīmē, ka laika zīmogs bija 0 vai trūkstošs — klasiska tukšas vērtības pazīme, nevis reāls datums.
  • Datums ap 1970. gadu plus dažas dienas parasti nozīmē, ka sekundes kaut kur tika interpretētas kā milisekundes; datums 56 000+ gadā nozīmē pretējo.
  • Izklājlapās: Excel skaita dienas kopš 1900. gada, nevis sekundes kopš 1970. gada. Konvertē ar =(A1/86400)+DATE(1970,1,1) sekunžu laika zīmogam.

Reāli lietošanas scenāriji

Kur laika zīmogi praksē sagādā problēmas: derīguma termiņa lauku lasīšana JWT un API tokenos (exp/iat ir Unix sekundes), lietotāja kļūdas ziņojuma laika sasaistīšana ar servera žurnāla rindiņām, kešatmiņas TTL un cron logu iestatīšana, un sertifikāta vai tokena derīguma termiņa pārbaude. Relatīvā laika rinda ("pirms 3 stundām") ir ātrākais pareizības pārbaudes veids visam tam.

JWT atkļūdošana ir pietiekami izplatīta, lai to izklāstītu: atšifrē tokena datu daļu ar Base64 rīku, tad ielīmē exp vērtību šeit — uzreiz zināsi, vai tokens ir beidzies un cik ļoti.

Base64 kodētājs / dekodētājs · Vecuma kalkulators

Kāpēc Unix laiks tika izveidots šādā veidā

Viena pieaugoša skaitļa glabāšana kopš fiksētas epohas (nevis gads/mēnesis/diena/stunda struktūra) bija apzināts vienkāršības kompromiss: divus laika zīmogus var salīdzināt vai atņemt ar parastu aritmētiku, bez kalendāra loģikas — tāpēc datubāzes, žurnālu formāti un praktiski katras programmēšanas valodas iekšējais datuma attēlojums ir uz to būvēti. Šīs vienkāršības cena ir tieši tas, kam šis rīks paredzēts, lai to izlīdzinātu — cilvēki nedomā sekundēs kopš 1970. gada, tāpēc katrs laika zīmogs jāpārveido atpakaļ kalendāra datumā, pirms tas cilvēkam, kas to lasa, kaut ko nozīmē, un šī pārveidošana vienlaikus jāņem vērā laika josla, precizitāte (sekundes vai milisekundes) un attēlošanas formāts.

Biežāk uzdotie jautājumi

Kā rīks nosaka, vai mans laika zīmogs ir sekundēs vai milisekundēs?

Pēc lieluma. Vērtības 1 000 000 000 000 (1e12) vai lielākas tiek uzskatītas par milisekundēm; mazākas vērtības — par sekundēm. Pašreizējie datumi ir aptuveni 1,7 miljardi sekundēs un aptuveni 1700 miljardi milisekundēs, tāpēc abi diapazoni reālistiskiem datumiem nepārklājas.

Kāpēc mans laika zīmogs rāda citu stundu, nekā gaidīju?

Laika joslas. Laika zīmogs vienmēr ir balstīts uz UTC; "vietējā laika" rinda to pārveido tavas ierīces laika joslā. Salīdzini UTC rindu ar to, ko reģistrē tavas avota sistēma — daudzi serveri reģistrē UTC.

Kas ir 2038. gada problēma?

Sistēmas, kas laika zīmogus glabā kā parakstītus 32 bitu veselos skaitļus, pārplūst 2038. gada 19. janvārī. Mūsdienu sistēmas izmanto 64 bitu veselos skaitļus un uz tām tas neattiecas. Šis rīks izmanto JavaScript skaitļus, kas apstrādā datumus tālu aiz 2038. gada.

Vai varu konvertēt negatīvus laika zīmogus?

Jā. Negatīvi laika zīmogi apzīmē datumus pirms 1970. gada 1. janvāra — piemēram, -86400 ir 1969. gada 31. decembris.

Vai epoha ietver lēcienu sekundes?

Nē. Unix laiks pieņem, ka katrā dienā ir tieši 86 400 sekundes, un ignorē lēcienu sekundes — apzināts vienkāršojums, kas atvieglo aritmētiku.

Saistītie rīki