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 raspoznati jedinice.
Ako Unix timestamp da datum blizu 1970, vrednost se često tumači u pogrešnoj jedinici.
Unix timestamp obično koristi sekunde, a JavaScript Date obično milisekunde.
Moderan timestamp od 10 cifara često su sekunde, od 13 cifara često milisekunde. Ako se jedinice ne slažu, možda treba pomnožiti ili podeliti sa 1.000.
Pretvorili ste timestamp i stigli u januar 1970. Sat skoro nikad nije pokvaren. Broj je pročitan kao milisekunde iako je bio u sekundama—ili obrnuto.
Šta je Unix timestamp?
Unix timestamp meri vreme od Unix epoch: 1970-01-01 00:00:00 UTC. Obično koristi cele sekunde. Isti trenutak može da se čuva i u milisekundama (sekunde × 1.000). Sam broj ne označava jedinicu.
Sekunde vs milisekunde: razlika ×1.000
Jedna sekunda je 1.000 milisekundi. Uporedite 1720000000 sa 1720000000000. Ako je prvo sekunde, a drugo milisekunde, to je isti trenutak. Pročitajte prvo kao milisekunde i datum skače ka 1970.
Ovi UTC rezultati su izračunati iz brojeva iznad, nisu nagađanje.
| Vrednost | Verovatna 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 | Pogrešna jedinica | Datum blizu 1970: 1970-01-20 21:46:40 UTC |
Zašto moj timestamp pokazuje 1970?
Ako se vrednost u sekundama tretira kao milisekunde, broj je 1.000 puta manji nego što treba. JavaScript tada broji samo kratak raspon posle 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 je epoch plus otprilike dve nedelje. Pomnožite sekunde sa 1.000 pre nego što ih date Date.
- SEKUNDE
- 1720000000
- MILISEKUNDE
- 1720000000000
- Vrednost u sekundama
- Pogrešno tretirana kao milisekunde
- Datum blizu 1970
Ako je rezultat blizu 1970, proverite jedinicu timestampa pre nego što istražujete vremensku zonu.
Da li je 10 cifara sekunde, a 13 milisekunde?
Za današnje datume 10 cifara često su sekunde, a 13 često milisekunde. To je brza naznaka, ne pravilo provere. Broj cifara se menja s vremenskim opsegom, a neki API čuvaju mikrosekunde ili nanosekunde. Potvrdite jedinicu dokumentacijom ili datumom koji ima smisla.
Zašto se ovo tako često dešava u JavaScriptu
U JavaScriptu numerički Date su milisekunde od epoch. Mnogi bekendovi, baze i Unix alati i dalje čuvaju sekunde. Proslediti sekunde pravo u Date zato je česta greš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 sistemi koriste druge jedinice
Drugi jezici, API i baze mogu da koriste sekunde ili milisekunde. Neki čuvaju mikrosekunde ili nanosekunde. Ne pretpostavljajte da jezik uvek koristi jednu jedinicu—pogledajte dokumentaciju. Ako je broj u JSON, Форматирање и поређење JSON-а polje čini čitljivim; jedinicu i dalje neće reći.
Kako da znam koju jedinicu koristi moj timestamp?
Prođite ove provere redom. Sam broj cifara nije dovoljan.
- Proverite dokumentaciju API ili baze podataka.
- Pogledajte približan broj cifara.
- Uporedite vrednost s uverljivim modernim timestampom.
- Isprobajte vrednost kao sekunde i kao milisekunde.
- Proverite da li dobijeni datum ima smisla.
Ako jedno tumačenje padne u 1970, a drugo na datum koji prepoznajete, uzrok je nesklad jedinica.
Česte greške sa Unix timestamp
- Sekunde protumačene kao milisekunde. Datum se urušava ka 1970, kao u primeru iznad.
- Milisekunde protumačene kao sekunde. Datum skače daleko u budućnost, ili pretvaranje ne uspe.
- Množenje sa 1.000 dva puta. Vrednost koja je već bila u milisekundama postaje ogromna i datum skače vekovima unapred.
- Deljenje sa 1.000 dva puta. Vrednost u sekundama se opet skuplja, opet blizu 1970.
- Kriviti vremensku zonu. Zona može da pomeri sate ili kalendarski dan. Ne prebacuje moderni timestamp u 1970.
- Tretirati formatirani datum kao Unix timestamp. Vrednost kao 2024-07-03T09:46:40Z nije broj epoch. Parsirajte je kao datum, ne kao sekunde.
Da li vremenska zona izaziva problem 1970?
Obično ne. Zona može da promeni prikazani sat i, blizu ponoći, kalendarski datum. Ne pretvara moderni Unix timestamp u 1970. Ako je rezultat 1970, prvo proverite sekunde naspram milisekundi.
Pretvorite i proverite Unix timestamp
NEXNARA Претварач датума и времена može da pretvori Unix timestamp u pregledaču.
Nalepite Unix sekunde ili milisekunde, koristite trenutni timestamp, vidite UTC i lokalno vreme, pretvorite zone i formatirajte datum. Automatsko prepoznavanje često tretira 10 cifara kao sekunde, a 13 kao milisekunde; jedinicu i dalje možete da izaberete.
Samo pretvaranje se dešava u pregledaču. Ovaj alat ne šalje datume ni timestampove na NEXNARA server. Reklame i druge funkcije sajta i dalje koriste mrežu; to je odvojeno od pretvaranja.
Treba da proverite Unix timestamp? Otvorite Претварач датума и времена i uporedite 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 posle 1970-01-01 00:00:00 UTC. Pomnožite sekunde sa 1.000 i pretvorite ponovo.
Da li su Unix timestamp sekunde ili milisekunde?
Obično sekunde. Mnogi veb API i JavaScript Date koriste milisekunde. Uvek proverite šta taj sistem dokumentuje. Neki sistemi koriste mikrosekunde ili nanosekunde.
Kako da pretvorim sekunde u milisekunde?
Pomnožite sa 1.000. 1720000000 sekundi je 1720000000000 milisekundi. U drugom smeru podelite sa 1.000.
Zašto JavaScript Date koristi milisekunde?
Numerički timestamp Date u JavaScriptu definisan je kao milisekunde od Unix epoch. Zato je new Date(unixSeconds) pogrešno kada je unixSeconds Unix sekunde.
Da li je timestamp od 10 cifara uvek sekunde?
Ne. Za današnje datume često jesu, a 13 cifara često su milisekunde. Broj cifara je naznaka, ne pravilo. Potvrdite dokumentacijom ili datumom koji ima smisla.
Da li Unix timestamp sadrži vremensku zonu?
Ne. Unix timestamp je trenutak brojan od 1970-01-01 00:00:00 UTC. Zone utiču na prikaz, ne na sam broj.