Tech Help
Unix Timestamp į datą: sekundės, milisekundės ir UTC paaiškinta
Konvertuokite Unix timestamp į datą. Palyginkite sekundes ir milisekundes, UTC ir vietos laiką, ISO 8601 ir kaip datą grąžinti į epoch laiką.
Unix timestamp reiškia laiką santykyje su Unix epoch: 1970-01-01 00:00:00 UTC. Paprastai saugomas kaip sekundės nuo epoch arba milisekundės nuo epoch.
Kad konvertuotumėte teisingai, pirmiausia turite žinoti vienetą. 1720000000 sekundžių yra 2024-07-03 09:46:40 UTC. 1720000000000 milisekundžių yra ta pati akimirka.
Timestamp nurodo akimirką. UTC, vietos laikas ar IANA zona keičia tik tai, kaip ta akimirka rodoma.
Tai konvertavimo vadovas: timestamp į datą, data į timestamp, UTC prieš vietos laiką ir ISO 8601. Jei reikšmė netikėtai tampa 1970 data, paprastai nesutampa sekundės ir milisekundės—žr. Unix Timestamp sekundėmis ir milisekundėmis: kodėl data rodo 1970.
Kas yra Unix Timestamp?
Unix timestamp, Unix time ir epoch time paprastai reiškia praėjusį laiką nuo 1970-01-01 00:00:00 UTC. Skaičius nėra suformatuota datos eilutė su laiko juostos etikete. Ta pati akimirka gali būti rodoma skirtingomis valandomis UTC, Niujorke, Tokijuje ar Seule. Unix timestamp ne visada sekundės—praktikoje milisekundės dažnos.
Kas yra Unix Epoch?
Unix epoch yra 1970-01-01 00:00:00 UTC. Timestamp 0 yra ta akimirka. Teigiamas timestamp yra po epoch. Kai kurios sistemos leidžia neigiamą timestamp laikui prieš epoch, tačiau kalbų ir datų intervalų palaikymas skiriasi.
Ar mano timestamp sekundėmis, ar milisekundėmis?
1720000000 yra sekundės; 1720000000000 yra milisekundės; tai ta pati akimirka. Praktinė užuomina: apie 10 skaitmenų dažnai reiškia sekundes, apie 13 dažnai milisekundes. Skaitmenų skaičius tėra euristika. Praeities ar ateities datos, kiti vienetai ar savas epoch gali atrodyti kitaip. Datos ir laiko keitiklis gali konvertuoti sekundėmis, milisekundėmis arba auto (≤10 skaitmenų kaip sekundės, ≥13 kaip milisekundės)—pasirinkite vienetą, kai jį žinote.
Kodėl neteisingas vienetas duoda neteisingą datą?
JavaScript Date tikisi milisekundžių. Jei 1720000000 perduodate kaip milisekundes, gaunate 1970-01-20 21:46:40 UTC. Milisekundes laikyti sekundėmis ar atvirkščiai atveda į visai kitą datą. 1970 diagnostikos keliui žr. Unix Timestamp sekundėmis ir milisekundėmis: kodėl data rodo 1970.
new Date(1720000000);
// 1970-01-20T21:46:40.000Z
Kaip konvertuoti Unix timestamp sekundėmis
Sekundes padauginkite iš 1000, kad gautumėte milisekundes. JavaScript Date pagrįstas milisekundėmis, todėl naudokite new Date(timestamp * 1000).
const timestamp = 1720000000;
const date = new Date(timestamp * 1000);
date.toISOString();
// 2024-07-03T09:46:40.000Z
Kaip konvertuoti timestamp milisekundėmis
Milisekundes perduokite Date tiesiogiai. Milisekundinio timestamp dar kartą ne dauginkite iš 1000.
const timestamp = 1720000000000;
const date = new Date(timestamp);
date.toISOString();
// 2024-07-03T09:46:40.000Z
Kodėl tas pats timestamp rodo kitą laiką?
Unix timestamp yra viena akimirka. Rodymas UTC, vietos laiku ar pasirinktoje IANA zonoje keičia ciferblatą. Reikšmei 1720000000000 UTC yra 2024-07-03 09:46:40. America/New_York tą dieną yra 2024-07-03 05:46:40 (EDT). Asia/Seoul yra 2024-07-03 18:46:40 (UTC+9). Niujorko ir Seulo reikšmės ateina iš Intl, ne iš fiksuoto poslinkio šūkio.
Ar Unix timestamp turi laiko juostą?
Ne. Jis nesaugo nei America/New_York, nei Asia/Seoul. Timestamp nurodo akimirką. Laiko juosta taikoma, kai tą akimirką formatuojate kaip skaitomą datą ir laiką. Epoch apibrėžtas santykyje su UTC; pats skaičius nėra „UTC laiko juostos laukas“.
Unix Timestamp ir ISO 8601
1720000000 ir 2024-07-03T09:46:40Z gali reikšti tą pačią akimirką. Unix yra skaitinė praėjusio laiko reikšmė. ISO 8601 yra skaitoma datos ir laiko eilutė ir gali baigtis Z (UTC) arba skaitiniu poslinkiu. Z reiškia UTC; kartais vadinama Zulu. Tai ne tas pats formatas.
Kaip gauti dabartinį Unix timestamp?
JavaScript Date.now() yra milisekundės. Math.floor(Date.now() / 1000) yra sekundės. Straipsnyje neįrašykite fiksuoto „dabar“; jis juda.
Date.now();
Math.floor(Date.now() / 1000);
Ar datą galima konvertuoti atgal į Unix timestamp?
Taip. Iš aiškios UTC ISO eilutės getTime() grąžina milisekundes; padalykite iš 1000 ir apvalinkite žemyn sekundėms.
const date = new Date("2024-07-03T09:46:40Z");
date.getTime();
// 1720000000000
Math.floor(date.getTime() / 1000);
// 1720000000
Saugokitės dviprasmiškų datų formatų
03/07/2024 gali reikšti kovo 7 d. arba liepos 3 d., priklausomai nuo locale. Rinkitės ISO stiliaus datą ir laiką su juosta ar poslinkiu. Datos ir laiko keitiklis atmeta dviprasmiškas skaitines datas, pvz. 01/02/2026, ir prašo datos parinkiklio arba ISO stiliaus reikšmės.
O vasaros laikas?
Unix timestamp nesaugo DST vėliavėlės. Vietinis rodymas taiko zonos taisykles. America/New_York žiemą ir vasarą naudoja skirtingus poslinkius, todėl „Niujorkas yra UTC-5“ ne visada teisinga.
Ar Unix timestamp įskaito keliamąsias sekundes?
Įprastas POSIX/Unix laikas neskaičiuoja keliamųjų sekundžių kaip papildomų SI sekundžių ištisinėje skalėje. Platformos gali skirtis. Kasdieniam konvertavimui šią detalę galite ignoruoti.
Dažnos Unix timestamp konvertavimo klaidos
Šie painiojimai duoda neteisingą datą arba neteisingą ciferblatą:
Sekundės laikomos milisekundėmis
Šiuolaikinė sekundžių reikšmė tada atsiduria netoli 1970 JavaScript Date.
Milisekundės laikomos sekundėmis
Data šoka toli į ateitį.
10 ar 13 skaitmenų kaip įstatymas
Skaitmenų skaičius yra užuomina, ne garantija.
UTC painiojimas su vietos laiku
Akimirka ta pati; rodomas ciferblatas gali skirtis.
Prielaida, kad juosta yra skaičiuje
IANA vardai taikomi rodymo metu, nėra saugomi timestamp.
Dviprasmiškos datos, DST šūkiai ar papildomas ×1000
Naudokite ISO stiliaus įvestį. Milisekundinio timestamp dar kartą ne dauginkite.
Patikrinti UTC pavyzdžiai
Šie UTC laikai apskaičiuoti, ne atspėti:
| Įvestis | Vienetas | UTC |
|---|---|---|
| 0 | sekundės | 1970-01-01 00:00:00 |
| 1720000000 | sekundės | 2024-07-03 09:46:40 |
| 1720000000000 | milisekundės | 2024-07-03 09:46:40 |
| 1720000000 | milisekundės | 1970-01-20 21:46:40 |
Paprastas konvertavimo sprendimo vadovas
Jei šaltinis įvardija vienetą, naudokite jį. Jei ne, skaitmenų skaičius yra užuomina—tada patikrinkite, ar data atrodo tikėtina. Konvertuokite sekundes į milisekundes, kai API reikia ms. Rodymui rinkitės UTC, vietos laiką ar IANA zoną. ISO 8601 naudingas saugojimui ir keitimuisi.
- Turite Unix timestamp
- Vienetas nurodytas? Naudokite jį; kitaip tikrinkite dydį
- Sekundės? ×1000, jei API reikia milisekundžių
- Milisekundės? Naudokite tiesiogiai ms pagrįstame API
- Rodykite kaip UTC, vietos laiką ar IANA zoną
- Reikia eilutės? ISO 8601 gali tikti
Timestamp nurodo tašką laike. UTC, vietos laikas ar laiko juosta tik nusprendžia, kaip ta akimirka parodoma žmogui.
Konvertuokite Unix timestamp naršyklėje
NEXNARA Datos ir laiko keitiklis konvertuoja Unix sekundes ir milisekundes, rodo UTC, vietos laiką ir ISO 8601 bei konvertuoja tarp IANA laiko juostų.
Unix veiksena palaiko sekundes, milisekundes, auto vienetą, dabartinį laiką ir datą-į-timestamp. Laiko juostos veiksena ieško IANA vardų, naudoja naršyklės zoną ir taiko DST jautrius Intl poslinkius. Formato veiksena turi locale skaitomą išvestį, 12/24 val. rodymą ir dviprasmiškos datos apsaugą. Datų skirtumas yra atskira veiksena.
Konvertavimas naudoja naršyklės Date ir Intl API. Reikšmės už to, ką Date gali pavaizduoti, atmetamos. Auto vienetas nespėja 11–12 skaitmenų reikšmių; rinkitės sekundes arba milisekundes.
Pats datos ir timestamp konvertavimas vyksta jūsų naršyklėje. Įvestys nesiunčiamos į NEXNARA serverį konvertavimui. Skelbimai ir kitos svetainės funkcijos vis tiek naudoja tinklą.
Įklijuokite timestamp į Datos ir laiko keitiklis ir palyginkite UTC, vietos laiką ir ISO 8601, prieš rinkdamiesi vienetą.
FAQ
Kaip konvertuoti Unix timestamp į datą?
Žinokite vienetą. Sekundėms JavaScript naudokite new Date(n * 1000). Milisekundėms — new Date(n). Tada formatuokite kaip UTC, vietos laiką ar zoną.
Ar Unix timestamp sekundėmis, ar milisekundėmis?
Gali būti ir taip, ir taip. Apie 10 skaitmenų dažnai reiškia sekundes, apie 13 milisekundes, bet tai euristika, ne taisyklė.
Kodėl mano timestamp rodo 1970?
Paprastai sekundžių reikšmė perskaityta kaip milisekundės. Žr. Unix Timestamp sekundėmis ir milisekundėmis: kodėl data rodo 1970.
Ar Unix timestamp visada UTC?
Epoch apibrėžtas santykyje su UTC, o skaičius nurodo akimirką. Rodymo laiko juosta atskira. Tai nėra saugomas „UTC laiko juostos laukas“.
Ar Unix timestamp turi laiko juostą?
Ne. Jis neneša IANA identifikatoriaus. Juosta taikoma, kai formatuojate akimirką.
Kaip konvertuoti datą į Unix timestamp?
Iš UTC ISO eilutės date.getTime() yra milisekundės; Math.floor(date.getTime() / 1000) yra sekundės.