Utilia

Unix laika zīmoga pārveidotājs

Pārveidojiet Unix laika zīmogus sekundēs vai milisekundēs lasāmos datumos vietējā laikā, UTC un ISO 8601 un pārvērtiet jebkuru datumu atpakaļ epoch laikā.

Pašreizējais laika zīmogs
–

Laika zīmogs → datums

Vietējais laiks
–
UTC
–
ISO 8601
–

Datums → laika zīmogs

Sekundes
–
Milisekundes
–

Kā lietot Unix laika zīmoga pārveidotāju

  1. Lai pārveidotu laika zīmogu datumā, ielīmējiet epoch vērtību, piemēram, 1700000000 vai 1700000000000. Rīks pēc lieluma nosaka, vai tā ir sekundēs vai milisekundēs.
  2. Izlasiet rezultātu savā vietējā laika joslā, UTC un ISO 8601 formātā.
  3. Lai darbotos pretējā virzienā, ievadiet datumu un laiku; rīks atgriež atbilstošo epoch vērtību gan sekundēs, gan milisekundēs.
  4. Paskatieties uz pašreizējo laika zīmogu augšā, kas atjaunojas tiešraidē, kad vien vajadzīgs „tagad“ kā epoch vērtība.

Kas ir Unix laika zīmogs?

Unix laika zīmogs, ko sauc arī par epoch laiku vai POSIX laiku, ir sekunžu skaits, kas pagājis kopš Unix epohas: 1970. gada 1. janvāra plkst. 00:00:00 UTC. Piemēram, 1700000000 atbilst 2023. gada 14. novembrim plkst. 22:13:20 UTC. Datumi pirms 1970. gada tiek attēloti ar negatīviem skaitļiem.

Laika zīmogi ir populāri izstrādātāju vidū, jo tas ir viens skaitlis, kas nav atkarīgs no laika joslām, vasaras laika vai datumu formātiem. Divu brīžu salīdzināšana ir vienkārša atņemšana, bet kārtošana pēc laika – vienkārša skaitliska kārtošana. Tos var atrast datubāzēs, žurnālfailos, API atbildēs, JWT apgalvojumos, piemēram, exp un iat, failu metadatos un cron tipa plānotājos.

Ņemiet vērā, ka Unix laiks neņem vērā pārlēces sekundes: katra diena tiek skaitīta kā tieši 86 400 sekundes. Tas vienkāršo aritmētiku, un tāpēc laika zīmogs nav stingrs katras fiziskās sekundes skaits kopš 1970. gada.

Sekundes pret milisekundēm

Biežākais neskaidrību avots ir vienība. Tradicionālās Unix sistēmas, PHP, Python time.time() un lielākā daļa datubāzu izmanto sekundes, kas mūsdienās dod 10 ciparu skaitli. JavaScript Date.now(), Java System.currentTimeMillis() un daudzas JSON API izmanto milisekundes, kas dod 13 ciparu skaitli. Ja milisekundes uztver kā sekundes, nokļūstat desmitiem tūkstošu gadu nākotnē; ja sekundes uztver kā milisekundes, nokļūstat 1970. gada janvārī. Šis rīks skatās uz skaitļa lielumu, lai automātiski izvēlētos pareizo vienību, un, pārveidojot datumu, parāda abas vērtības, lai varētu nokopēt to, ko gaida jūsu sistēma.

Vietējais laiks, UTC un ISO 8601

Laika zīmogs identificē vienu precīzu brīdi, taču šis brīdis atkarībā no laika joslas tiek rādīts atšķirīgi. Vietējais rezultāts izmanto jūsu ierīcē iestatīto laika joslu, bet UTC ir universālais atskaites laiks, ko izmanto serveri un žurnāli. ISO 8601, piemēram, 2023-11-14T22:13:20.000Z, ir nepārprotams teksta formāts, ko iesaka datumu apmaiņai starp sistēmām; noslēdzošais Z nozīmē UTC.

2038. gada problēma

Daudzas vecākas sistēmas glabā Unix laiku kā 32 bitu veselu skaitli ar zīmi, kura maksimālā vērtība ir 2 147 483 647. Šis ierobežojums tiek sasniegts 2038. gada 19. janvārī plkst. 03:14:07 UTC. Sekundi vēlāk šāds skaitītājs pārplūst līdz lielam negatīvam skaitlim un tiek nolasīts kā datums 1901. gada decembrī. Mūsdienu operētājsistēmas, datubāzes un valodas lielākoties ir pārgājušas uz 64 bitu laika vērtībām, kas ierobežojumu pagarina par miljardiem gadu, taču iegultās ierīces, mantotie failu formāti un vecas datubāzu kolonnas joprojām var būt skartas. Pats JavaScript nav skarts, jo laiku glabā kā milisekundes 64 bitu peldošā komata skaitlī.

Privātums

Visas pārveidošanas notiek jūsu pārlūkprogrammā, izmantojot tās iebūvētās datumu funkcijas. Neviens laika zīmogs vai datums netiek sūtīts uz serveri.

Biežāk uzdotie jautājumi

Kā zināt, vai mans laika zīmogs ir sekundēs vai milisekundēs?

Saskaitiet ciparus. Pašreizējs datums sekundēs ir 10 cipari un milisekundēs 13 cipari. Rīks automātiski piemēro to pašu loģiku, pamatojoties uz skaitļa lielumu.

Kāpēc vietējais laiks atšķiras no UTC?

Abi apraksta vienu un to pašu brīdi. Vietējais laiks piemēro jūsu ierīces laika joslas nobīdi un vasaras laika noteikumus, bet UTC nobīdes nav. Ja laiku kopīgojat ar cilvēkiem citur, UTC vai ISO 8601 palīdz izvairīties no pārpratumiem.

Vai Unix laika zīmogs var būt negatīvs?

Jā. Negatīvas vērtības apzīmē brīžus pirms 1970. gada 1. janvāra UTC. Piemēram, -86400 ir 1969. gada 31. decembris plkst. 00:00:00 UTC.

Vai Unix laika zīmogā ir laika josla?

Nē. Laika zīmogs vienmēr ir attiecībā pret UTC un nenes informāciju par laika joslu. Laika josla ir svarīga tikai tad, kad to attēlojat kā kalendāra datumu un laiku.

Vai manas sistēmas 2038. gadā salūzīs?

Tikai tad, ja tās glabā laiku 32 bitu veselā skaitlī ar zīmi. Pārbaudiet vecākas datubāzes, iegulto aparātprogrammatūru un bināros failu formātus. Viss, kas izmanto 64 bitu laiku, ir drošs paredzamā nākotnē.