Tech Help

Unix Timestamp u sekundama vs milisekundama: zašto datum pokazuje 1970

Ako Unix timestamp postane datum blizu 1970, često su sekunde pročitane kao milisekunde. Kako razlikovati jedinice.

Brzi odgovor

Ako Unix timestamp da datum blizu 1970, vrijednost se često tumači u krivoj jedinici.

Unix timestampi obično koriste sekunde, a JavaScript Date obično milisekunde.

Moderan zapis od 10 znamenki često su sekunde, od 13 često milisekunde. Ako se jedinice ne poklapaju, možda treba pomnožiti ili podijeliti s 1000.

Pretvorili ste timestamp i završili u siječnju 1970. Sat gotovo nikad nije pokvaren. Broj je pročitan kao milisekunde dok je bio spremljen u sekundama—ili obrnuto.

Što je Unix timestamp?

Unix timestamp mjeri vrijeme od Unix epoch: 1970-01-01 00:00:00 UTC. Obično koristi cijele sekunde. Isti trenutak može se spremiti i u milisekundama (sekunde × 1000). Sam broj ne navodi jedinicu.

Sekunde vs milisekunde: razlika ×1000

Jedna sekunda jest 1000 milisekundi. Usporedite 1720000000 s 1720000000000. Ako je prvo sekunde, a drugo milisekunde, to je isti trenutak. Pročitajte prvo kao milisekunde i datum skače prema 1970.

Ovi UTC rezultati izračunati su iz brojeva gore, nisu nagađanje.

Vrijednost Vjerojatna jedinica Tumačenje (UTC)
1720000000 Sekunde Moderan datum kao sekunde: 2024-07-03 09:46:40 UTC
1720000000000 Milisekunde Isti trenutak kao milisekunde: 2024-07-03 09:46:40 UTC
1720000000 kao milisekunde Kriva jedinica Datum blizu 1970: 1970-01-20 21:46:40 UTC

Zašto moj timestamp pokazuje 1970?

Ako se vrijednost u sekundama tretira kao milisekunde, broj je 1000 puta premali. JavaScript tada broji samo kratak raspon nakon Unix epoch, pa datum ostaje u 1970:

const seconds = 1720000000;

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

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

Taj datum iz 1970. epoch je plus otprilike dva tjedna. Pomnožite sekunde s 1000 prije nego što ih predate Date.

  • SEKUNDE
  • 1720000000
  • MILISEKUNDE
  • 1720000000000
Isti trenutak: sekunde × 1000 = milisekunde.
  • Vrijednost u sekundama
  • Pogrešno tretirana kao milisekunde
  • Datum blizu 1970
Sekunde pročitane kao milisekunde padaju blizu Unix epoch.
Sekunde ili milisekunde?

Ako je rezultat blizu 1970, provjerite jedinicu timestampa prije nego što istražujete vremensku zonu.

Jesu li 10 znamenki sekunde, a 13 milisekunde?

Za današnje datume 10 znamenki često su sekunde, a 13 često milisekunde. To je brza naznaka, ne pravilo provjere. Broj znamenki mijenja se s vremenskim rasponom, a neki API-ji spremaju mikrosekunde ili nanosekunde. Potvrdite jedinicu dokumentacijom ili datumom koji ima smisla.

Zašto se to tako često događa u JavaScriptu

U JavaScriptu numerički Date jesu milisekunde od epoch. Mnogi pozadinski sustavi, baze i Unix alati i dalje spremaju sekunde. Proslijediti sekunde izravno u Date stoga je česta pogreška:

const unixSeconds = 1720000000;

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

wrong je blizu 1970 (1970-01-20 21:46:40 UTC). correct je taj moderni trenutak (2024-07-03 09:46:40 UTC).

Drugi sustavi koriste druge jedinice

Drugi jezici, API-ji i baze mogu koristiti sekunde ili milisekunde. Neki spremaju mikrosekunde ili nanosekunde. Ne pretpostavljajte da jezik uvijek koristi jednu jedinicu—pogledajte dokumentaciju. Ako je broj u JSON-u, Formatiranje i usporedba JSON-a polje čini čitljivim; jedinicu ipak neće reći.

Kako znam koju jedinicu koristi moj timestamp?

Prođite ove provjere redom. Sam broj znamenki nije dovoljan.

  1. Provjerite dokumentaciju API-ja ili baze podataka.
  2. Pogledajte približan broj znamenki.
  3. Usporedite vrijednost s uvjerljivim modernim timestampom.
  4. Isprobajte vrijednost kao sekunde i kao milisekunde.
  5. Provjerite ima li dobiveni datum smisla.

Ako jedno tumačenje padne u 1970, a drugo na datum koji prepoznajete, uzrok je nesklad jedinica.

Česte pogreške s Unix timestampom

  • Sekunde protumačene kao milisekunde. Datum se urušava prema 1970, kao u primjeru gore.
  • Milisekunde protumačene kao sekunde. Datum skače daleko u budućnost, ili pretvorba ne uspije.
  • Množenje s 1000 dva puta. Vrijednost koja je već bila u milisekundama postaje ogromna i datum skače stoljećima unaprijed.
  • Dijeljenje s 1000 dva puta. Vrijednost u sekundama opet se skuplja, opet blizu 1970.
  • Okrivljavanje vremenske zone. Zona može pomaknuti sate ili kalendarski dan. Ne prebacuje moderan timestamp u 1970.
  • Tretirati formatirani datum kao Unix timestamp. Vrijednost poput 2024-07-03T09:46:40Z nije broj epoch. Parsirajte je kao datum, ne kao sekunde.

Uzrokuje li vremenska zona problem 1970?

Obično ne. Zona može promijeniti prikazani sat i, blizu ponoći, kalendarski datum. Ne pretvara moderan Unix timestamp u 1970. Ako je rezultat 1970, prvo provjerite sekunde naspram milisekundi.

Pretvorite i provjerite Unix timestamp

NEXNARA Pretvarač datuma i vremena može pretvoriti Unix timestamp u pregledniku.

Zalijepite Unix sekunde ili milisekunde, upotrijebite trenutačni timestamp, vidite UTC i lokalno vrijeme, pretvorite zone i formatirajte datum. Automatsko prepoznavanje često tretira 10 znamenki kao sekunde, a 13 kao milisekunde; jedinicu i dalje možete odabrati.

Sama pretvorba događa se u pregledniku. Ovaj alat ne šalje datume ni timestampove na NEXNARA poslužitelj. Oglasi i druge značajke stranice i dalje koriste mrežu; to je odvojeno od pretvorbe.

Trebate provjeriti Unix timestamp? Otvorite Pretvarač datuma i vremena i usporedite sekunde s milisekundama.

FAQ

Zašto moj Unix timestamp pokazuje 1970?

Često su to sekunde pročitane kao milisekunde. JavaScript tada obrađuje mnogo manji broj, pa datum padne odmah nakon 1970-01-01 00:00:00 UTC. Pomnožite sekunde s 1000 i pretvorite ponovno.

Jesu li Unix timestampi sekunde ili milisekunde?

Obično sekunde. Mnogi web API-ji i JavaScript Date koriste milisekunde. Uvijek provjerite što taj sustav dokumentira. Neki sustavi koriste mikrosekunde ili nanosekunde.

Kako pretvoriti sekunde u milisekunde?

Pomnožite s 1000. 1720000000 sekundi jest 1720000000000 milisekundi. U drugom smjeru podijelite s 1000.

Zašto JavaScript Date koristi milisekunde?

Numerički timestamp Date u JavaScriptu definiran je kao milisekunde od Unix epoch. Zato je new Date(unixSeconds) krivo kada je unixSeconds Unix sekunde.

Je li timestamp od 10 znamenki uvijek sekunde?

Ne. Za današnje datume često jesu, a 13 znamenki često su milisekunde. Broj znamenki je naznaka, ne pravilo. Potvrdite dokumentacijom ili datumom koji ima smisla.

Sadrži li Unix timestamp vremensku zonu?

Ne. Unix timestamp je trenutak brojan od 1970-01-01 00:00:00 UTC. Zone utječu na prikaz, ne na sam broj.