Tech Help
Unix Timestamp saat vs milisaat: mengapa tarikh jadi 1970
Jika Unix timestamp jadi tarikh dekat 1970, nilainya sering saat yang dibaca sebagai milisaat. Cara membezakan unit.
Jika Unix timestamp memberi tarikh dekat 1970, nilai sering ditafsir dalam unit yang salah.
Unix timestamp biasanya menggunakan saat, manakala Date JavaScript biasanya milisaat.
Timestamp moden 10 digit sering saat; 13 digit sering milisaat. Jika unit tidak sepadan, anda mungkin perlu darab atau bahagi dengan 1,000.
Anda tukar timestamp kepada tarikh dan mendarat pada Januari 1970. Jarang jam rosak. Nombor dibaca sebagai milisaat sedangkan disimpan dalam saat—atau sebaliknya.
Apakah Unix timestamp?
Unix timestamp mengukur masa sejak Unix epoch: 1970-01-01 00:00:00 UTC. Biasanya saat penuh. Instant yang sama boleh disimpan sebagai milisaat (saat × 1,000). Nombor itu sendiri tidak menanda unit.
Saat vs milisaat: beza 1,000 kali
Satu saat bersamaan 1,000 milisaat. Bandingkan 1720000000 dengan 1720000000000. Jika yang pertama saat dan yang kedua milisaat, itu instant yang sama. Baca yang pertama sebagai milisaat, tarikh melonjak ke 1970.
Hasil UTC ini dikira daripada nombor di atas, bukan diteka.
| Nilai | Unit berkemungkinan | Tafsiran (UTC) |
|---|---|---|
| 1720000000 | Saat | Tarikh moden apabila dibaca sebagai saat: 2024-07-03 09:46:40 UTC |
| 1720000000000 | Milisaat | Instant yang sama apabila dibaca sebagai milisaat: 2024-07-03 09:46:40 UTC |
| 1720000000 sebagai milisaat | Unit salah | Tarikh dekat 1970: 1970-01-20 21:46:40 UTC |
Mengapa timestamp saya menunjukkan 1970?
Jika nilai saat dianggap milisaat, nombor itu 1,000 kali terlalu kecil. JavaScript hanya mengira jangka pendek selepas Unix epoch, jadi tarikh kekal 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
Tarikh 1970 itu ialah epoch plus kira-kira dua minggu. Darab saat dengan 1,000 sebelum menyerahkannya kepada Date.
- SAAT
- 1720000000
- MILISAAT
- 1720000000000
- Nilai saat
- Salah dianggap milisaat
- Tarikh dekat 1970
Jika hasil dekat 1970, periksa unit timestamp sebelum menyiasat zon waktu.
Adakah 10 digit saat dan 13 digit milisaat?
Bagi tarikh moden, 10 digit sering saat dan 13 sering milisaat. Itu petunjuk pantas, bukan peraturan pengesahan. Bilangan digit berubah dengan julat masa, dan sesetengah API menyimpan mikrosaat atau nanosaat. Sahkan unit dengan dokumentasi atau tarikh yang masuk akal.
Mengapa ini kerap berlaku dalam JavaScript
Dalam JavaScript, Date berangka ialah milisaat sejak epoch. Banyak backend, pangkalan data dan alatan Unix masih menyimpan saat. Menyerahkan nilai saat terus kepada Date ialah pepijat biasa:
const unixSeconds = 1720000000;
const wrong = new Date(unixSeconds);
const correct = new Date(unixSeconds * 1000);
wrong dekat 1970 (1970-01-20 21:46:40 UTC). correct ialah instant moden (2024-07-03 09:46:40 UTC).
Sistem lain menggunakan unit berbeza
Bahasa, API dan pangkalan data lain boleh menggunakan saat atau milisaat. Ada yang menyimpan mikrosaat atau nanosaat. Jangan anggap sesuatu bahasa sentiasa menggunakan satu unit—semak dokumentasi. Jika nombor dalam JSON, Format dan bandingkan JSON memudahkan membaca medan; ia masih tidak memberitahu unit.
Bagaimana tahu unit timestamp saya?
Ikuti semakan ini mengikut tertib. Bilangan digit semata-mata tidak cukup.
- Semak dokumentasi API atau pangkalan data.
- Lihat anggaran bilangan digit.
- Bandingkan nilai dengan timestamp moden yang munasabah.
- Uji nilai sebagai saat dan sebagai milisaat.
- Lihat sama ada tarikh terhasil masuk akal.
Jika satu tafsiran jatuh pada 1970 dan yang lain pada tarikh yang anda kenali, puncanya unit.
Kesilapan Unix timestamp yang biasa
- Saat ditafsir sebagai milisaat. Tarikh merosot ke 1970 seperti contoh di atas.
- Milisaat ditafsir sebagai saat. Tarikh melonjak jauh ke masa depan, atau penukaran gagal.
- Didarab 1,000 dua kali. Nilai yang sudah milisaat menjadi besar dan tarikh maju berabad-abad.
- Dibahagi 1,000 dua kali. Nilai saat mengecut lagi, kembali dekat 1970.
- Menyalahkan zon waktu. Zon boleh mengalih jam atau hari kalendar. Ia tidak menukar timestamp moden menjadi 1970.
- Menganggap rentetan tarikh berformat sebagai Unix timestamp. Nilai seperti 2024-07-03T09:46:40Z bukan nombor epoch. Hurai sebagai rentetan tarikh, bukan saat.
Adakah zon waktu menyebabkan masalah 1970?
Biasanya tidak. Zon waktu boleh mengubah jam dipaparkan dan, dekat tengah malam, tarikh kalendar. Ia tidak menukar Unix timestamp moden menjadi 1970. Jika hasilnya 1970, periksa saat berbanding milisaat dahulu.
Tukar dan semak Unix timestamp
NEXNARA Penukar tarikh & masa boleh menukar Unix timestamp dalam pelayar.
Tampal saat atau milisaat Unix, guna timestamp semasa, lihat UTC dan masa setempat, tukar zon waktu, dan format tarikh. Pengesanan automatik sering merawat 10 digit sebagai saat dan 13 sebagai milisaat; anda masih boleh pilih unit.
Penukaran itu sendiri berlaku dalam pelayar. Alat ini tidak menghantar tarikh atau timestamp ke pelayan NEXNARA. Iklan dan ciri tapak lain masih menggunakan rangkaian; itu berasingan daripada penukaran.
Perlu semak Unix timestamp? Buka Penukar tarikh & masa dan bandingkan saat dengan milisaat.
FAQ
Mengapa Unix timestamp saya menunjukkan 1970?
Sering kali saat yang dibaca sebagai milisaat. JavaScript merawat nombor yang jauh lebih kecil, jadi tarikh jatuh tidak lama selepas 1970-01-01 00:00:00 UTC. Darab saat dengan 1,000 lalu tukar semula.
Unix timestamp saat atau milisaat?
Biasanya saat. Banyak API web dan Date JavaScript menggunakan milisaat. Semak dokumentasi sistem itu. Ada yang menggunakan mikrosaat atau nanosaat.
Bagaimana menukar saat kepada milisaat?
Darab dengan 1,000. 1720000000 saat ialah 1720000000000 milisaat. Arah sebaliknya, bahagi dengan 1,000.
Mengapa Date JavaScript menggunakan milisaat?
Timestamp berangka Date dalam JavaScript ditakrif sebagai milisaat sejak Unix epoch. Itu sebab new Date(unixSeconds) salah jika unixSeconds ialah saat Unix.
Adakah timestamp 10 digit sentiasa saat?
Tidak. Bagi tarikh moden sering ya, dan 13 digit sering milisaat. Bilangan digit ialah petunjuk, bukan peraturan. Sahkan dengan dokumentasi atau tarikh yang masuk akal.
Adakah Unix timestamp mengandungi zon waktu?
Tidak. Unix timestamp ialah instant dikira dari 1970-01-01 00:00:00 UTC. Zon waktu mempengaruhi paparan, bukan nombor itu sendiri.