Tech Help

Unix Timestamp sekundites vs millisekundites: miks kuupäev näitab 1970

Kui Unix timestampist saab kuupäev 1970 lähedal, on sekundid sageli loetud millisekunditeks. Kuidas ühikuid eristada.

Lühike vastus

Kui Unix timestamp annab kuupäeva 1970 lähedal, tõlgendatakse väärtust sageli vales ühikus.

Unix timestampid kasutavad tavaliselt sekundeid, JavaScript Date tavaliselt millisekundeid.

Tänapäevane 10-kohaline timestamp on sageli sekundid, 13-kohaline sageli millisekundid. Kui ühikud ei klapi, võib vaja minna korrutamist või jagamist 1000-ga.

Teisendasite timestampi ja sattusite 1970. aasta jaanuarisse. Kell on harva katki. Arv loeti millisekunditeks, kuigi see oli salvestatud sekundites—või vastupidi.

Mis on Unix timestamp?

Unix timestamp mõõdab aega Unix epochist: 1970-01-01 00:00:00 UTC. Tavaliselt kasutab täissekundeid. Sama hetke saab salvestada ka millisekundites (sekundid × 1000). Arv ise ühikut ei märgi.

Sekundid vs millisekundid: vahe ×1000

Üks sekund on 1000 millisekundit. Võrrelge 1720000000 ja 1720000000000. Kui esimene on sekundid ja teine millisekundid, on see sama hetk. Lugege esimest millisekunditena ja kuupäev hüppab 1970 poole.

Need UTC tulemused on arvutatud ülaltoodud arvudest, mitte arvatud.

Väärtus Tõenäoline ühik Tõlgendus (UTC)
1720000000 Sekundid Tänapäevane kuupäev sekunditena: 2024-07-03 09:46:40 UTC
1720000000000 Millisekundid Sama hetk millisekunditena: 2024-07-03 09:46:40 UTC
1720000000 millisekunditena Vale ühik Kuupäev 1970 lähedal: 1970-01-20 21:46:40 UTC

Miks mu timestamp näitab 1970?

Kui sekundiväärtust käsitletakse millisekunditena, on arv 1000 korda liiga väike. JavaScript loeb siis ainult lühikese lõigu pärast Unix epochit, nii et kuupäev jääb 1970. aastasse:

const seconds = 1720000000;

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

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

See 1970. aasta kuupäev on epoch pluss umbes kaks nädalat. Korrutage sekundid 1000-ga enne Date’ile andmist.

  • SEKUNDID
  • 1720000000
  • MILLISEKUNDID
  • 1720000000000
Sama hetk: sekundid × 1000 = millisekundid.
  • Sekundiväärtus
  • Eksikombel millisekunditena
  • Kuupäev 1970 lähedal
Sekundid millisekunditena loetuna langevad Unix epochi lähedale.
Sekundid või millisekundid?

Kui tulemus on 1970 lähedal, kontrollige timestampi ühikut enne ajavööndi uurimist.

Kas 10 kohta on sekundid ja 13 millisekundid?

Tänapäevaste kuupäevade puhul on 10 kohta sageli sekundid ja 13 sageli millisekundid. See on kiire vihje, mitte valideerimisreegel. Kohtade arv muutub ajavahemikuga ja mõned API-d salvestavad mikro- või nanosekundeid. Kinnitage ühik dokumentatsioonist või kuupäevast, mis on mõistlik.

Miks see JavaScriptis nii sageli juhtub

JavaScriptis on arvuline Date millisekundid epochist. Paljud taustad, andmebaasid ja Unixi tööriistad salvestavad endiselt sekundeid. Sekundite andmine otse Date’ile on seega sage viga:

const unixSeconds = 1720000000;

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

wrong on 1970 lähedal (1970-01-20 21:46:40 UTC). correct on see tänapäevane hetk (2024-07-03 09:46:40 UTC).

Teised süsteemid kasutavad teisi ühikuid

Teised keeled, API-d ja andmebaasid võivad kasutada sekundeid või millisekundeid. Mõned salvestavad mikro- või nanosekundeid. Ärge eeldage, et keel kasutab alati üht ühikut—vaadake dokumentatsiooni. Kui arv on JSONis, muudab JSON-i vormindamine ja võrdlus välja loetavaks; ühikut see siiski ei ütle.

Kuidas teada, millist ühikut mu timestamp kasutab?

Käige need kontrollid järjekorras läbi. Kohtade arv üksi ei piisa.

  1. Vaadake API või andmebaasi dokumentatsiooni.
  2. Vaadake ligikaudset kohtade arvu.
  3. Võrrelge väärtust usutava tänapäevase timestampiga.
  4. Proovige väärtust sekunditena ja millisekunditena.
  5. Kontrollige, kas tulemuskuupäev on mõistlik.

Kui üks tõlgendus langeb 1970. aastasse ja teine teile tuttavale kuupäevale, on põhjus ühikute mittevastavus.

Levinud Unix timestampi vead

  • Sekundid millisekunditena. Kuupäev vajub 1970 poole, nagu ülaltoodud näites.
  • Millisekundid sekunditena. Kuupäev hüppab kaugele tulevikku või teisendus ebaõnnestub.
  • Korrutamine 1000-ga kaks korda. Väärtus, mis juba oli millisekundites, muutub hiiglaslikuks ja kuupäev hüppab sajandeid ette.
  • Jagamine 1000-ga kaks korda. Sekundiväärtus kahaneb uuesti, jälle 1970 lähedale.
  • Ajavööndi süüdistamine. Vöönd võib nihutada tunde või kalendripäeva. Tänapäevast timestampi 1970. aastasse ei vii.
  • Vormindatud kuupäeva käsitlemine Unix timestampina. Väärtus nagu 2024-07-03T09:46:40Z ei ole epoch-arv. Parsige see kuupäevana, mitte sekunditena.

Kas ajavöönd põhjustab 1970. aasta probleemi?

Tavaliselt mitte. Ajavöönd võib muuta kuvatud kellaaega ja kesköö lähedal kalendrikuupäeva. Tänapäevast Unix timestampi 1970. aastaks ei muuda. Kui tulemus on 1970, kontrollige esmalt sekundeid versus millisekundeid.

Teisendage ja kontrollige Unix timestampi

NEXNARA Kuupäeva ja kellaaja teisendaja saab Unix timestampi brauseris teisendada.

Kleepige Unixi sekundid või millisekundid, kasutage praegust timestampi, vaadake UTC-d ja kohalikku aega, teisendage vööndeid ja vormindage kuupäev. Automaattuvastus käsitleb 10 kohta sageli sekunditena ja 13 millisekunditena; ühiku saate siiski valida.

Teisendus ise toimub teie brauseris. Tööriist ei saada kuupäevi ega timestampe NEXNARA serverisse. Reklaamid ja muud saidi funktsioonid kasutavad endiselt võrku; see on teisendusest eraldi.

Peate Unix timestampi kontrollima? Avage Kuupäeva ja kellaaja teisendaja ja võrrelge sekundeid millisekunditega.

FAQ

Miks mu Unix timestamp näitab 1970?

Sageli on need sekundid, mis loeti millisekunditeks. JavaScript töötleb palju väiksemat arvu, nii et kuupäev langeb vahetult pärast 1970-01-01 00:00:00 UTC. Korrutage sekundid 1000-ga ja teisendage uuesti.

Kas Unix timestampid on sekundid või millisekundid?

Tavaliselt sekundid. Paljud veebi-API-d ja JavaScript Date kasutavad millisekundeid. Kontrollige alati, mida see süsteem dokumenteerib. Mõned süsteemid kasutavad mikro- või nanosekundeid.

Kuidas teisendada sekundid millisekunditeks?

Korrutage 1000-ga. 1720000000 sekundit on 1720000000000 millisekundit. Teistpidi jagage 1000-ga.

Miks JavaScript Date kasutab millisekundeid?

Arvuline Date timestamp JavaScriptis on defineeritud millisekunditena Unix epochist. Seetõttu on new Date(unixSeconds) vale, kui unixSeconds on Unixi sekundid.

Kas 10-kohaline timestamp on alati sekundid?

Ei. Tänapäevaste kuupäevade puhul sageli jah, ja 13 kohta on sageli millisekundid. Kohtade arv on vihje, mitte reegel. Kinnitage dokumentatsiooniga või kuupäevaga, mis on mõistlik.

Kas Unix timestamp sisaldab ajavööndit?

Ei. Unix timestamp on hetk, mida loetakse alates 1970-01-01 00:00:00 UTC. Vööndid mõjutavad kuvamist, mitte arvu ennast.