Tech Help
Unix Timestamp v sekundah vs milisekundah: zakaj datum kaže 1970
Če Unix timestamp postane datum blizu 1970, so pogosto sekunde prebrane kot milisekunde. Kako razločiti enote.
Če Unix timestamp da datum blizu 1970, se vrednost pogosto razlaga v napačni enoti.
Unix timestampi običajno uporabljajo sekunde, JavaScript Date pa običajno milisekunde.
Sodobni 10-mestni timestamp so pogosto sekunde, 13-mestni pogosto milisekunde. Če se enote ne ujemajo, bo morda treba množiti ali deliti s 1000.
Pretvorili ste timestamp in pristali v januarju 1970. Ura skoraj nikoli ni pokvarjena. Število je bilo prebrano kot milisekunde, čeprav je bilo shranjeno v sekundah—ali obratno.
Kaj je Unix timestamp?
Unix timestamp meri čas od Unix epoch: 1970-01-01 00:00:00 UTC. Običajno uporablja cele sekunde. Isti trenutek je mogoče shraniti tudi v milisekundah (sekunde × 1000). Število samo enote ne označi.
Sekunde vs milisekunde: razlika ×1000
Ena sekunda je 1000 milisekund. Primerjajte 1720000000 z 1720000000000. Če je prvo sekunde in drugo milisekunde, je to isti trenutek. Preberite prvo kot milisekunde in datum skoči proti 1970.
Ti UTC rezultati so izračunani iz števil zgoraj, niso ugibanje.
| Vrednost | Verjetna enota | Razlaga (UTC) |
|---|---|---|
| 1720000000 | Sekunde | Sodoben datum kot sekunde: 2024-07-03 09:46:40 UTC |
| 1720000000000 | Milisekunde | Isti trenutek kot milisekunde: 2024-07-03 09:46:40 UTC |
| 1720000000 kot milisekunde | Napačna enota | Datum blizu 1970: 1970-01-20 21:46:40 UTC |
Zakaj moj timestamp kaže 1970?
Če se vrednost v sekundah obravnava kot milisekunde, je število 1000-krat premajhno. JavaScript tedaj šteje le kratek razpon po Unix epoch, zato datum ostane v 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
Ta datum iz 1970 je epoch plus približno dva tedna. Pomnožite sekunde s 1000, preden jih podate Date.
- SEKUNDE
- 1720000000
- MILISEKUNDE
- 1720000000000
- Vrednost v sekundah
- Pomotoma kot milisekunde
- Datum blizu 1970
Če je rezultat blizu 1970, preverite enoto timestampa, preden raziskujete časovni pas.
Ali je 10 mest sekund, 13 pa milisekund?
Pri današnjih datumih je 10 mest pogosto sekund in 13 pogosto milisekund. To je hiter namig, ne pravilo preverjanja. Število mest se spreminja s časovnim razponom, nekateri API-ji pa shranjujejo mikro- ali nanosekunde. Enoto potrdite z dokumentacijo ali datumom, ki ima smisel.
Zakaj se to v JavaScriptu dogaja tako pogosto
V JavaScriptu je številčni Date milisekunde od epoch. Veliko zaledij, podatkovnih zbirk in Unix orodij še vedno shranjuje sekunde. Podati sekunde neposredno v Date je zato pogosta napaka:
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 tisti sodobni trenutek (2024-07-03 09:46:40 UTC).
Drugi sistemi uporabljajo druge enote
Drugi jeziki, API-ji in zbirke lahko uporabljajo sekunde ali milisekunde. Nekateri shranjujejo mikro- ali nanosekunde. Ne predpostavljajte, da jezik vedno uporablja eno enoto—preverite dokumentacijo. Če je število v JSON, Oblikovanje in primerjava JSON-a polje naredi berljivo; enote vseeno ne pove.
Kako vem, katero enoto uporablja moj timestamp?
Sledite tem preverjanjem po vrsti. Samo število mest ne zadošča.
- Preverite dokumentacijo API-ja ali podatkovne zbirke.
- Poglejte približno število mest.
- Primerjajte vrednost z verjetnim sodobnim timestampom.
- Preizkusite vrednost kot sekunde in kot milisekunde.
- Preverite, ali ima dobljeni datum smisel.
Če ena razlaga pade v 1970, druga pa na datum, ki ga prepoznate, je vzrok neusklajenost enot.
Pogoste napake pri Unix timestamp
- Sekunde razložene kot milisekunde. Datum se sesede proti 1970, kot v zgornjem primeru.
- Milisekunde razložene kot sekunde. Datum skoči daleč v prihodnost ali pretvorba spodleti.
- Množenje s 1000 dvakrat. Vrednost, ki je že bila v milisekundah, postane ogromna in datum skoči stoletja naprej.
- Deljenje s 1000 dvakrat. Vrednost v sekundah se spet skrči, spet blizu 1970.
- Obtoževanje časovnega pasu. Pas lahko premakne ure ali koledarski dan. Sodobnega timestampa ne premakne v 1970.
- Obravnavati oblikovan datum kot Unix timestamp. Vrednost, kot je 2024-07-03T09:46:40Z, ni število epoch. Razčlenite jo kot datum, ne kot sekunde.
Ali časovni pas povzroča težavo 1970?
Običajno ne. Pas lahko spremeni prikazano uro in blizu polnoči koledarski datum. Sodobnega Unix timestampa ne spremeni v 1970. Če je rezultat 1970, najprej preverite sekunde proti milisekundam.
Pretvorite in preverite Unix timestamp
NEXNARA Pretvornik datuma in časa lahko pretvori Unix timestamp v brskalniku.
Prilepite Unix sekunde ali milisekunde, uporabite trenutni timestamp, glejte UTC in krajevni čas, pretvorite pasove in oblikujte datum. Samodejno prepoznavanje pogosto obravnava 10 mest kot sekunde in 13 kot milisekunde; enoto lahko še vedno izberete.
Sama pretvorba se zgodi v brskalniku. Orodje ne pošilja datumov ali timestampov na strežnik NEXNARA. Oglasi in druge funkcije spletnega mesta še vedno uporabljajo omrežje; to je ločeno od pretvorbe.
Morate preveriti Unix timestamp? Odprite Pretvornik datuma in časa in primerjajte sekunde z milisekundami.
FAQ
Zakaj moj Unix timestamp kaže 1970?
Pogosto so to sekunde, prebrane kot milisekunde. JavaScript tedaj obdela veliko manjše število, zato datum pade kmalu po 1970-01-01 00:00:00 UTC. Pomnožite sekunde s 1000 in pretvorite znova.
Ali so Unix timestampi sekunde ali milisekunde?
Običajno sekunde. Mnogi spletni API-ji in JavaScript Date uporabljajo milisekunde. Vedno preverite, kaj tisti sistem dokumentira. Nekateri sistemi uporabljajo mikro- ali nanosekunde.
Kako pretvorim sekunde v milisekunde?
Pomnožite s 1000. 1720000000 sekund je 1720000000000 milisekund. V drugo smer delite s 1000.
Zakaj JavaScript Date uporablja milisekunde?
Številčni timestamp Date v JavaScriptu je opredeljen kot milisekunde od Unix epoch. Zato je new Date(unixSeconds) napačen, kadar so unixSeconds Unix sekunde.
Ali je 10-mestni timestamp vedno v sekundah?
Ne. Pri današnjih datumih pogosto da, 13 mest pa je pogosto milisekund. Število mest je namig, ne pravilo. Potrdite z dokumentacijo ali datumom, ki ima smisel.
Ali Unix timestamp vsebuje časovni pas?
Ne. Unix timestamp je trenutek, štet od 1970-01-01 00:00:00 UTC. Pasovi vplivajo na prikaz, ne na samo število.