Tech Help

Unix Timestamp másodperc vs ezredmásodperc: miért 1970 a dátum

Ha a Unix timestamp 1970 körüli dátumot ad, gyakran másodpercet olvastak ezredmásodpercként. Így különbözteti meg az egységeket.

Rövid válasz

Ha a Unix timestamp 1970 körüli dátumot ad, az értéket gyakran rossz egységben értelmezik.

A Unix timestamp általában másodpercet használ, a JavaScript Date általában ezredmásodpercet.

Egy mai 10 számjegyű timestamp gyakran másodperc, a 13 számjegyű gyakran ezredmásodperc. Ha az egységek nem illeszkednek, 1000-rel kell szorozni vagy osztani.

Átváltott egy timestampet, és 1970 januárjában landolt. Ritka, hogy az óra lenne elromolva. A számot ezredmásodpercnek olvasták, holott másodpercben volt tárolva—vagy fordítva.

Mi a Unix timestamp?

A Unix timestamp az időt a Unix epoch óta méri: 1970-01-01 00:00:00 UTC. Általában egész másodperc. Ugyanaz a pillanat ezredmásodpercben is tárolható (másodperc × 1000). Maga a szám nem jelöli az egységet.

Másodperc vs ezredmásodperc: az 1000-szeres különbség

Egy másodperc 1000 ezredmásodperc. Hasonlítsa össze a 1720000000 és a 1720000000000 értéket. Ha az első másodperc, a második ezredmásodperc, ugyanaz a pillanat. Az elsőt ezredmásodpercnek olvasva a dátum 1970 felé ugrik.

Ezeket az UTC eredményeket a fenti számokból számoltuk, nem találgattuk.

Érték Valószínű egység Értelmezés (UTC)
1720000000 Másodperc Mai dátum másodpercként: 2024-07-03 09:46:40 UTC
1720000000000 Ezredmásodperc Ugyanaz a pillanat ezredmásodpercként: 2024-07-03 09:46:40 UTC
1720000000 ezredmásodpercként Hibás egység Dátum 1970 körül: 1970-01-20 21:46:40 UTC

Miért mutat 1970-et a timestampem?

Ha a másodpercértéket ezredmásodpercként kezelik, a szám 1000-szer kisebb a kelleténél. A JavaScript ekkor csak rövid szakaszt számol a Unix epoch után, így a dátum 1970-ben marad:

const seconds = 1720000000;

new Date(seconds);
// 1970-01-20 21:46:40 UTC

new Date(seconds * 1000);
// 2024-07-03 09:46:40 UTC

Az 1970-es dátum az epoch plusz nagyjából két hét. Szorozza a másodperceket 1000-rel, mielőtt a Date-nek adja.

  • MÁSODPERC
  • 1720000000
  • EZREDMÁSODPERC
  • 1720000000000
Ugyanaz a pillanat: másodperc × 1000 = ezredmásodperc.
  • Másodpercérték
  • Tévesen ezredmásodpercként kezelve
  • Dátum 1970 körül
Másodperc ezredmásodpercként olvasva a Unix epoch közelébe esik.
Másodperc vagy ezredmásodperc?

Ha az eredmény 1970 körül van, az időzóna előtt a timestamp egységét ellenőrizze.

A 10 számjegy másodperc, a 13 ezredmásodperc?

Mai dátumoknál a 10 számjegy gyakran másodperc, a 13 gyakran ezredmásodperc. Ez gyors támpont, nem érvényesítési szabály. A számjegyszám az időtartománytól függ, egyes API-k mikro- vagy nanoszekundumot tárolnak. Az egységet dokumentációval vagy ésszerű dátummal erősítse meg.

Miért történik ez ilyen gyakran JavaScriptben

JavaScriptben a numerikus Date érték ezredmásodperc az epoch óta. Sok backend, adatbázis és Unix eszköz még másodpercet tárol. A másodpercérték közvetlen Date-nek adása ezért gyakori hiba:

const unixSeconds = 1720000000;

const wrong = new Date(unixSeconds);
const correct = new Date(unixSeconds * 1000);

A wrong 1970 körül van (1970-01-20 21:46:40 UTC). A correct a mai pillanat (2024-07-03 09:46:40 UTC).

Más rendszerek más egységet használnak

Más nyelvek, API-k és adatbázisok használhatnak másodpercet vagy ezredmásodpercet. Egyesek mikro- vagy nanoszekundumot tárolnak. Ne feltételezze, hogy egy nyelv mindig egy egységet használ—nézze a dokumentációt. Ha a szám JSON-ban van, a JSON formázás és összehasonlítás olvashatóvá teszi a mezőt; az egységet akkor sem mondja meg.

Hogyan tudom meg, milyen egységet használ a timestampem?

Ezeket az ellenőrzéseket sorrendben végezze. A számjegyszám önmagában nem elég.

  1. Nézze meg az API vagy az adatbázis dokumentációját.
  2. Nézze meg a hozzávetőleges számjegyszámot.
  3. Hasonlítsa az értéket egy hihető mai timestamphez.
  4. Próbálja ki az értéket másodpercként és ezredmásodpercként.
  5. Ellenőrizze, hogy a kapott dátum értelmes-e.

Ha az egyik értelmezés 1970-be esik, a másik pedig ismert dátumra, az egységeltérés az ok.

Gyakori Unix timestamp hibák

  • Másodperc ezredmásodpercként értelmezve. A dátum 1970 felé omlik, mint a fenti példában.
  • Ezredmásodperc másodpercként értelmezve. A dátum messze a jövőbe ugrik, vagy a konverzió sikertelen.
  • 1000-rel kétszer szorozni. Egy már ezredmásodperces érték óriási lesz, a dátum évszázadokat ugrik előre.
  • 1000-rel kétszer osztani. A másodpercérték újra zsugorodik, megint 1970 közelében.
  • Az időzónát okolni. A zóna órákat vagy a naptári napot eltolhatja. Mai timestampet nem visz 1970-be.
  • Formázott dátumszöveget Unix timestampként kezelni. Egy 2024-07-03T09:46:40Z érték nem epoch szám. Dátumként elemezze, ne másodpercként.

Az időzóna okozza az 1970-es problémát?

Általában nem. Az időzóna megváltoztathatja a megjelenített órát, éjfél közelében a naptári dátumot. Mai Unix timestampet nem tesz 1970-né. Ha az eredmény 1970, először a másodpercet és az ezredmásodpercet ellenőrizze.

Unix timestamp átváltása és ellenőrzése

A NEXNARA Dátum- és időkonverter a böngészőben válthat Unix timestampet.

Illesszen be Unix másodpercet vagy ezredmásodpercet, használja az aktuális timestampet, nézze az UTC-t és a helyi időt, váltson időzónát és formázzon dátumot. Az automatikus felismerés a 10 számjegyet gyakran másodpercnek, a 13-at ezredmásodpercnek veszi; az egységet továbbra is választhatja.

Maga az átváltás a böngészőben történik. Az eszköz nem küld dátumot vagy timestampet NEXNARA-kiszolgálóra. A hirdetések és más oldalfunkciók továbbra is használják a hálózatot; ez elválik az átváltástól.

Ellenőriznie kell egy Unix timestampet? Nyissa meg a Dátum- és időkonverter eszközt, és hasonlítsa a másodpercet az ezredmásodperchez.

FAQ

Miért mutat 1970-et a Unix timestampem?

Gyakran másodperc, amelyet ezredmásodpercnek olvastak. A JavaScript sokkal kisebb számot kezel, így a dátum 1970-01-01 00:00:00 UTC utánra esik. Szorozza a másodperceket 1000-rel, és váltson újra.

A Unix timestamp másodperc vagy ezredmásodperc?

Általában másodperc. Sok webes API és a JavaScript Date ezredmásodpercet használ. Mindig nézze meg, mit dokumentál az a rendszer. Egyes rendszerek mikro- vagy nanoszekundumot használnak.

Hogyan váltok másodpercet ezredmásodpercre?

Szorozza 1000-rel. 1720000000 másodperc 1720000000000 ezredmásodperc. Visszafelé ossza 1000-rel.

Miért használ a JavaScript Date ezredmásodpercet?

A numerikus Date timestamp JavaScriptben a Unix epoch óta eltelt ezredmásodperc. Ezért new Date(unixSeconds) hibás, ha unixSeconds Unix másodperc.

A 10 számjegyű timestamp mindig másodperc?

Nem. Mai dátumoknál gyakran igen, a 13 számjegy gyakran ezredmásodperc. A számjegyszám támpont, nem szabály. Erősítse meg dokumentációval vagy ésszerű dátummal.

Tartalmaz a Unix timestamp időzónát?

Nem. A Unix timestamp egy pillanat 1970-01-01 00:00:00 UTC óta számolva. Az időzónák a megjelenítést befolyásolják, nem magát a számot.