Tech Help
Unix Timestamp v sekundách vs milisekundách: prečo dátum ukazuje 1970
Ak sa z Unix timestamp stane dátum okolo 1970, často sa sekundy čítali ako milisekundy. Ako jednotky rozlíšiť.
Ak Unix timestamp dá dátum okolo 1970, hodnota sa často vykladá v nesprávnej jednotke.
Unix timestamp zvyčajne používa sekundy, JavaScript Date zvyčajne milisekundy.
Moderný 10-miestny timestamp je často v sekundách, 13-miestny často v milisekundách. Ak jednotky nesedia, možno treba násobiť alebo deliť 1000.
Prevodili ste timestamp a skončili v januári 1970. Hodiny takmer nikdy nie sú pokažené. Číslo sa čítalo ako milisekundy, hoci bolo v sekundách—alebo naopak.
Čo je Unix timestamp?
Unix timestamp meria čas od Unix epoch: 1970-01-01 00:00:00 UTC. Zvyčajne používa celé sekundy. Ten istý okamih možno uložiť aj v milisekundách (sekundy × 1000). Samotné číslo jednotku neuvádza.
Sekundy vs milisekundy: rozdiel ×1000
Jedna sekunda je 1000 milisekúnd. Porovnajte 1720000000 s 1720000000000. Ak je prvé sekundy a druhé milisekundy, ide o ten istý okamih. Prečítajte prvé ako milisekundy a dátum skočí k roku 1970.
Tieto výsledky UTC sú spočítané z čísel vyššie, nie sú odhad.
| Hodnota | Pravdepodobná jednotka | Výklad (UTC) |
|---|---|---|
| 1720000000 | Sekundy | Moderný dátum ako sekundy: 2024-07-03 09:46:40 UTC |
| 1720000000000 | Milisekundy | Ten istý okamih ako milisekundy: 2024-07-03 09:46:40 UTC |
| 1720000000 ako milisekundy | Nesprávna jednotka | Dátum okolo 1970: 1970-01-20 21:46:40 UTC |
Prečo môj timestamp ukazuje 1970?
Ak sa hodnota v sekundách berie ako milisekundy, číslo je 1000-krát menšie, než má byť. JavaScript potom počíta len krátky úsek po Unix epoch a dátum ostane v roku 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
Ten dátum 1970 je epoch plus zhruba dva týždne. Pred odovzdaním do Date vynásobte sekundy 1000.
- SEKUNDY
- 1720000000
- MILISEKUNDY
- 1720000000000
- Hodnota v sekundách
- Omylom braná ako milisekundy
- Dátum okolo 1970
Ak je výsledok okolo 1970, najprv skontrolujte jednotku timestampu, až potom časové pásmo.
Je 10 číslic sekundy a 13 milisekundy?
Pri dnešných dátumoch je 10 číslic často sekundy a 13 milisekundy. Je to rýchla nápoveda, nie validačné pravidlo. Počet číslic sa mení s časovým rozsahom a niektoré API ukladajú mikrosekundy alebo nanosekundy. Jednotku overte dokumentáciou alebo dátumom, ktorý dáva zmysel.
Prečo sa to v JavaScripte stáva tak často
V JavaScripte je číselné Date milisekundy od epoch. Mnoho backendov, databáz a Unix nástrojov stále ukladá sekundy. Poslať sekundy priamo do Date je preto častá chyba:
const unixSeconds = 1720000000;
const wrong = new Date(unixSeconds);
const correct = new Date(unixSeconds * 1000);
wrong je okolo 1970 (1970-01-20 21:46:40 UTC). correct je ten moderný okamih (2024-07-03 09:46:40 UTC).
Iné systémy používajú iné jednotky
Iné jazyky, API a databázy môžu používať sekundy alebo milisekundy. Niektoré ukladajú mikrosekundy alebo nanosekundy. Nepredpokladajte, že jazyk vždy používa jednu jednotku—pozrite dokumentáciu. Ak je číslo v JSON, Formátovanie a porovnanie JSON pole sprístupní; jednotku aj tak nepovie.
Ako spoznám, ktorú jednotku môj timestamp používa?
Prejdite tieto kontroly v poradí. Samotný počet číslic nestačí.
- Skontrolujte dokumentáciu API alebo databázy.
- Pozrite približný počet číslic.
- Porovnajte hodnotu s dôveryhodným moderným timestampom.
- Vyskúšajte hodnotu ako sekundy aj ako milisekundy.
- Overte, či výsledný dátum dáva zmysel.
Ak jeden výklad skončí v roku 1970 a druhý pri dátume, ktorý poznáte, príčinou je nesúlad jednotiek.
Časté chyby pri Unix timestamp
- Sekundy vyložené ako milisekundy. Dátum sa zrúti k roku 1970, ako v príklade vyššie.
- Milisekundy vyložené ako sekundy. Dátum skočí ďaleko do budúcnosti, alebo prevod zlyhá.
- Násobenie 1000 dvakrát. Hodnota, ktorá už bola v milisekundách, sa stane obrovskou a dátum poskočí o stáročia.
- Delenie 1000 dvakrát. Hodnota v sekundách sa znova scvrkne, znova blízko roku 1970.
- Obviňovanie časového pásma. Pásmo môže posunúť hodiny alebo kalendárny deň. Moderný timestamp do roku 1970 neposunie.
- Zaobchádzať s formátovaným dátumom ako s Unix timestamp. Hodnota ako 2024-07-03T09:46:40Z nie je číslo epoch. Parsujte ju ako dátum, nie ako sekundy.
Spôsobuje časové pásmo problém roku 1970?
Zvyčajne nie. Pásmo môže zmeniť zobrazené hodiny a blízko polnoci kalendárny dátum. Moderný Unix timestamp na rok 1970 nepremení. Ak je výsledok 1970, najprv skontrolujte sekundy verzus milisekundy.
Previesť a skontrolovať Unix timestamp
NEXNARA Prevodník dátumu a času vie previesť Unix timestamp v prehliadači.
Vložte Unix sekundy alebo milisekundy, použite aktuálny timestamp, zobrazte UTC a miestny čas, preveďte pásma a naformátujte dátum. Automatická detekcia často berie 10 číslic ako sekundy a 13 ako milisekundy; jednotku si aj tak môžete zvoliť.
Samotný prevod prebieha v prehliadači. Nástroj neodosiela dátumy ani timestampy na server NEXNARA. Reklamy a ďalšie funkcie webu sieť stále používajú; to je oddelené od prevodu.
Potrebujete skontrolovať Unix timestamp? Otvorte Prevodník dátumu a času a porovnajte sekundy s milisekundami.
FAQ
Prečo môj Unix timestamp ukazuje 1970?
Často ide o sekundy čítané ako milisekundy. JavaScript spracuje omnoho menšie číslo, takže dátum padne tesne po 1970-01-01 00:00:00 UTC. Vynásobte sekundy 1000 a preveďte znova.
Sú Unix timestamp sekundy alebo milisekundy?
Zvyčajne sekundy. Mnoho webových API a JavaScript Date používa milisekundy. Vždy sa pozrite, čo daný systém dokumentuje. Niektoré systémy používajú mikrosekundy alebo nanosekundy.
Ako previesť sekundy na milisekundy?
Vynásobte 1000. 1720000000 sekúnd je 1720000000000 milisekúnd. Naopak delte 1000.
Prečo JavaScript Date používa milisekundy?
Číselný timestamp Date v JavaScripte je definovaný ako milisekundy od Unix epoch. Preto je new Date(unixSeconds) zle, keď unixSeconds sú Unix sekundy.
Je 10-miestny timestamp vždy v sekundách?
Nie. Pri dnešných dátumoch často áno a 13 číslic sú často milisekundy. Počet číslic je nápoveda, nie pravidlo. Overte dokumentáciou alebo dátumom, ktorý dáva zmysel.
Obsahuje Unix timestamp časové pásmo?
Nie. Unix timestamp je okamih počítaný od 1970-01-01 00:00:00 UTC. Pásma ovplyvňujú zobrazenie, nie samotné číslo.