Tech Help
Unix Timestamp sekundēs pret milisekundēm: kāpēc datums rāda 1970
Ja Unix timestamp kļūst par datumu ap 1970, bieži sekundes nolasītas kā milisekundes. Kā atšķirt mērvienības.
Ja Unix timestamp dod datumu ap 1970, vērtību bieži interpretē nepareizā mērvienībā.
Unix timestamp parasti izmanto sekundes, bet JavaScript Date parasti milisekundes.
Mūsdienīgs 10 ciparu timestamp bieži ir sekundes, 13 ciparu bieži milisekundes. Ja mērvienības nesakrīt, var nākties reizināt vai dalīt ar 1000.
Jūs pārveidojāt timestamp un nonācāt 1970. gada janvārī. Pulkstenis gandrīz nekad nav saplīsis. Skaitlis nolasīts kā milisekundes, lai gan glabāts sekundēs—vai otrādi.
Kas ir Unix timestamp?
Unix timestamp mēra laiku no Unix epoch: 1970-01-01 00:00:00 UTC. Parasti izmanto veselas sekundes. To pašu mirkli var glabāt arī milisekundēs (sekundes × 1000). Pats skaitlis mērvienību nenorāda.
Sekundes pret milisekundēm: atšķirība ×1000
Viena sekunde ir 1000 milisekundes. Salīdziniet 1720000000 ar 1720000000000. Ja pirmais ir sekundes un otrais milisekundes, tas ir viens mirklis. Nolasiet pirmo kā milisekundes, un datums lec pret 1970.
Šie UTC rezultāti aprēķināti no skaitļiem augstāk, nav minējums.
| Vērtība | Iespējamā mērvienība | Interpretācija (UTC) |
|---|---|---|
| 1720000000 | Sekundes | Mūsdienīgs datums kā sekundes: 2024-07-03 09:46:40 UTC |
| 1720000000000 | Milisekundes | Tas pats mirklis kā milisekundes: 2024-07-03 09:46:40 UTC |
| 1720000000 kā milisekundes | Nepareiza mērvienība | Datums ap 1970: 1970-01-20 21:46:40 UTC |
Kāpēc mans timestamp rāda 1970?
Ja sekunžu vērtību uzskata par milisekundēm, skaitlis ir 1000 reižu par mazu. JavaScript tad skaita tikai īsu posmu pēc Unix epoch, tāpēc datums paliek 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
Tas 1970. gada datums ir epoch plus apmēram divas nedēļas. Reiziniet sekundes ar 1000, pirms tās nododat Date.
- SEKUNDES
- 1720000000
- MILISEKUNDES
- 1720000000000
- Sekunžu vērtība
- Kļūdaini uzskatīta par milisekundēm
- Datums ap 1970
Ja rezultāts ir ap 1970, pārbaudiet timestamp mērvienību, pirms pētāt laika joslu.
Vai 10 cipari ir sekundes un 13 milisekundes?
Mūsdienu datumiem 10 cipari bieži ir sekundes, 13 bieži milisekundes. Tas ir ātrs mājiens, ne validācijas likums. Ciparu skaits mainās ar laika diapazonu, un dažas API glabā mikro- vai nanosekundes. Apstipriniet mērvienību dokumentācijā vai ar datumu, kam ir jēga.
Kāpēc tas JavaScript notiek tik bieži
JavaScript skaitliskais Date ir milisekundes no epoch. Daudzi aizmugursistēmas, datubāzes un Unix rīki joprojām glabā sekundes. Sekundes nodot tieši Date ir bieža kļūda:
const unixSeconds = 1720000000;
const wrong = new Date(unixSeconds);
const correct = new Date(unixSeconds * 1000);
wrong ir ap 1970 (1970-01-20 21:46:40 UTC). correct ir tas mūsdienīgais mirklis (2024-07-03 09:46:40 UTC).
Citas sistēmas izmanto citas mērvienības
Citas valodas, API un datubāzes var izmantot sekundes vai milisekundes. Dažas glabā mikro- vai nanosekundes. Neuzskatiet, ka valoda vienmēr izmanto vienu mērvienību—skatiet dokumentāciju. Ja skaitlis ir JSON, JSON formatēšana un salīdzināšana padara lauku lasāmu; mērvienību tomēr nepateiks.
Kā zināt, kādu mērvienību izmanto mans timestamp?
Veiciet šīs pārbaudes pēc kārtas. Tikai ciparu skaits nepietiek.
- Pārbaudiet API vai datubāzes dokumentāciju.
- Skatiet aptuveno ciparu skaitu.
- Salīdziniet vērtību ar ticamu mūsdienīgu timestamp.
- Izmēģiniet vērtību kā sekundes un kā milisekundes.
- Pārbaudiet, vai iegūtajam datumam ir jēga.
Ja viena interpretācija krīt 1970. gadā, otra — datumā, ko atpazīstat, cēlonis ir mērvienību nesakritība.
Biežas Unix timestamp kļūdas
- Sekundes interpretētas kā milisekundes. Datums sabrūk pret 1970, kā piemērā augstāk.
- Milisekundes interpretētas kā sekundes. Datums lec tālu nākotnē, vai pārveide neizdodas.
- Reizināšana ar 1000 divreiz. Vērtība, kas jau bija milisekundēs, kļūst milzīga un datums lec gadsimtiem uz priekšu.
- Dalīšana ar 1000 divreiz. Sekunžu vērtība atkal sarūk, atkal ap 1970.
- Vainot laika joslu. Josla var pārbīdīt stundas vai kalendāra dienu. Mūsdienīgu timestamp uz 1970 nepārvieto.
- Formatētu datumu uzskatīt par Unix timestamp. Vērtība kā 2024-07-03T09:46:40Z nav epoch skaitlis. Parsējiet to kā datumu, ne kā sekundes.
Vai laika josla izraisa 1970 problēmu?
Parasti nē. Josla var mainīt rādīto pulksteni un, tuvu pusnaktij, kalendāra datumu. Mūsdienīgu Unix timestamp par 1970 nepadara. Ja rezultāts ir 1970, vispirms pārbaudiet sekundes pret milisekundēm.
Pārveidojiet un pārbaudiet Unix timestamp
NEXNARA Datuma un laika pārveidotājs var pārveidot Unix timestamp pārlūkā.
Ielīmējiet Unix sekundes vai milisekundes, izmantojiet pašreizējo timestamp, skatiet UTC un vietējo laiku, pārveidojiet joslas un formatējiet datumu. Automātiskā noteikšana bieži 10 ciparus uzskata par sekundēm un 13 par milisekundēm; mērvienību joprojām varat izvēlēties.
Pati pārveide notiek pārlūkā. Rīks nesūta datumus vai timestamp uz NEXNARA serveri. Reklāmas un citas vietnes funkcijas joprojām izmanto tīklu; tas ir atdalīts no pārveides.
Jāpārbauda Unix timestamp? Atveriet Datuma un laika pārveidotājs un salīdziniet sekundes ar milisekundēm.
FAQ
Kāpēc mans Unix timestamp rāda 1970?
Bieži tās ir sekundes, nolasītas kā milisekundes. JavaScript apstrādā daudz mazāku skaitli, tāpēc datums nokrīt tūlīt pēc 1970-01-01 00:00:00 UTC. Reiziniet sekundes ar 1000 un pārveidojiet vēlreiz.
Vai Unix timestamp ir sekundes vai milisekundes?
Parasti sekundes. Daudzas tīmekļa API un JavaScript Date izmanto milisekundes. Vienmēr pārbaudiet, ko dokumentē tā sistēma. Dažas sistēmas izmanto mikro- vai nanosekundes.
Kā pārveidot sekundes milisekundēs?
Reiziniet ar 1000. 1720000000 sekundes ir 1720000000000 milisekundes. Otrādi daliet ar 1000.
Kāpēc JavaScript Date izmanto milisekundes?
Skaitliskais Date timestamp JavaScript ir definēts kā milisekundes no Unix epoch. Tāpēc new Date(unixSeconds) ir nepareizs, ja unixSeconds ir Unix sekundes.
Vai 10 ciparu timestamp vienmēr ir sekundes?
Nē. Mūsdienu datumiem bieži jā, un 13 cipari bieži ir milisekundes. Ciparu skaits ir mājiens, ne likums. Apstipriniet ar dokumentāciju vai datumu, kam ir jēga.
Vai Unix timestamp satur laika joslu?
Nē. Unix timestamp ir mirklis, skaitīts no 1970-01-01 00:00:00 UTC. Joslas ietekmē attēlojumu, ne pašu skaitli.