Bantuan teknis

Unix Timestamp detik vs milidetik: kenapa tanggalnya jadi 1970

Jika Unix timestamp jadi tanggal dekat 1970, nilainya sering detik yang dibaca sebagai milidetik. Cara membedakan satuannya.

Jawaban singkat

Jika Unix timestamp memberi tanggal dekat 1970, nilainya sering ditafsirkan dalam satuan yang salah.

Unix timestamp biasanya memakai detik, sementara Date di JavaScript biasanya milidetik.

Timestamp modern 10 digit sering detik; 13 digit sering milidetik. Jika satuan tidak cocok, mungkin perlu dikali atau dibagi 1.000.

Anda mengubah timestamp menjadi tanggal dan mendarat di Januari 1970. Jarang karena jam rusak. Angka dibaca sebagai milidetik padahal disimpan dalam detik—atau sebaliknya.

Apa itu Unix timestamp?

Unix timestamp mengukur waktu sejak Unix epoch: 1970-01-01 00:00:00 UTC. Biasanya dalam detik utuh. Instant yang sama bisa disimpan sebagai milidetik (detik × 1.000). Angkanya sendiri tidak menandai satuan.

Detik vs milidetik: selisih 1.000 kali

Satu detik sama dengan 1.000 milidetik. Bandingkan 1720000000 dengan 1720000000000. Jika yang pertama detik dan yang kedua milidetik, itu instant yang sama. Baca yang pertama sebagai milidetik, tanggalnya loncat ke 1970.

Hasil UTC ini dihitung dari angka di atas, bukan ditebak.

Nilai Satuan yang mungkin Tafsiran (UTC)
1720000000 Detik Tanggal modern jika dibaca sebagai detik: 2024-07-03 09:46:40 UTC
1720000000000 Milidetik Instant yang sama jika dibaca sebagai milidetik: 2024-07-03 09:46:40 UTC
1720000000 sebagai milidetik Satuan salah Tanggal dekat 1970: 1970-01-20 21:46:40 UTC

Kenapa timestamp saya menampilkan 1970?

Jika nilai detik diperlakukan sebagai milidetik, angkanya 1.000 kali terlalu kecil. JavaScript hanya menghitung rentang pendek setelah Unix epoch, jadi tanggalnya di 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

Tanggal 1970 itu epoch plus sekitar dua minggu. Kalikan detik dengan 1.000 sebelum menyerahkannya ke Date.

  • DETIK
  • 1720000000
  • MILIDETIK
  • 1720000000000
Instant yang sama: detik × 1.000 = milidetik.
  • Nilai detik
  • Keliru diperlakukan sebagai milidetik
  • Tanggal dekat 1970
Nilai detik yang dibaca sebagai milidetik jatuh dekat Unix epoch.
Detik atau milidetik?

Jika hasilnya dekat 1970, periksa satuan timestamp sebelum menyelidiki zona waktu.

Apakah 10 digit selalu detik dan 13 digit milidetik?

Untuk tanggal modern, 10 digit sering detik dan 13 sering milidetik. Itu petunjuk cepat, bukan aturan validasi. Jumlah digit berubah dengan rentang waktu, dan beberapa API menyimpan mikrodetik atau nanodetik. Pastikan satuan dari dokumentasi atau tanggal yang masuk akal.

Kenapa ini sering terjadi di JavaScript

Di JavaScript, Date numerik adalah milidetik sejak epoch. Banyak backend, basis data, dan alat Unix masih menyimpan detik. Menyerahkan nilai detik langsung ke Date adalah bug yang umum:

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 adalah instant modern (2024-07-03 09:46:40 UTC).

Sistem lain memakai satuan berbeda

Bahasa, API, dan basis data lain bisa memakai detik atau milidetik. Beberapa menyimpan mikrodetik atau nanodetik. Jangan anggap suatu bahasa selalu memakai satu satuan—cek dokumentasi. Jika angkanya di JSON, Format dan bandingkan JSON membuat field lebih mudah dibaca; tetap tidak memberi tahu satuannya.

Bagaimana tahu satuan timestamp saya?

Lakukan pemeriksaan ini berurutan. Jumlah digit saja tidak cukup.

  1. Cek dokumentasi API atau basis data.
  2. Lihat perkiraan jumlah digit.
  3. Bandingkan nilainya dengan timestamp modern yang masuk akal.
  4. Uji nilai sebagai detik dan sebagai milidetik.
  5. Cek apakah tanggal hasilnya masuk akal.

Jika satu tafsiran jatuh di 1970 dan yang lain di tanggal yang Anda kenali, penyebabnya satuan.

Kesalahan umum Unix timestamp

  • Detik ditafsirkan sebagai milidetik. Tanggalnya merosot ke 1970, seperti contoh di atas.
  • Milidetik ditafsirkan sebagai detik. Tanggal meloncat jauh ke masa depan, atau konversi gagal.
  • Dikali 1.000 dua kali. Nilai yang sudah milidetik menjadi raksasa dan tanggalnya maju berabad-abad.
  • Dibagi 1.000 dua kali. Nilai detik menyusut lagi, kembali dekat 1970.
  • Menyalahkan zona waktu. Zona bisa menggeser jam atau hari kalender. Zona tidak mengubah timestamp modern menjadi 1970.
  • Memperlakukan string tanggal terformat sebagai Unix timestamp. Nilai seperti 2024-07-03T09:46:40Z bukan angka epoch. Parse sebagai string tanggal, bukan detik.

Apakah zona waktu penyebab masalah 1970?

Biasanya tidak. Zona waktu bisa mengubah jam yang ditampilkan dan, dekat tengah malam, tanggal kalender. Zona tidak mengubah Unix timestamp modern menjadi 1970. Jika hasilnya 1970, cek dulu detik versus milidetik.

Ubah dan periksa Unix timestamp

NEXNARA Konverter tanggal & waktu dapat mengubah Unix timestamp di browser.

Tempel detik atau milidetik Unix, pakai timestamp saat ini, lihat UTC dan waktu lokal, ubah zona waktu, dan format tanggal. Deteksi otomatis sering memperlakukan 10 digit sebagai detik dan 13 sebagai milidetik; Anda tetap bisa memilih satuan.

Konversinya sendiri terjadi di browser. Alat ini tidak mengirim tanggal atau timestamp ke server NEXNARA. Iklan dan fitur situs lain tetap memakai jaringan; itu terpisah dari konversi.

Perlu memeriksa Unix timestamp? Buka Konverter tanggal & waktu dan bandingkan detik dengan milidetik.

FAQ

Mengapa Unix timestamp saya menampilkan 1970?

Sering kali detik yang dibaca sebagai milidetik. JavaScript memperlakukan angka yang jauh lebih kecil, jadi tanggalnya sedikit setelah 1970-01-01 00:00:00 UTC. Kalikan detik dengan 1.000 lalu konversi lagi.

Unix timestamp itu detik atau milidetik?

Biasanya detik. Banyak API web dan Date JavaScript memakai milidetik. Cek dokumentasi sistem itu. Beberapa memakai mikrodetik atau nanodetik.

Bagaimana mengubah detik menjadi milidetik?

Kalikan 1.000. 1720000000 detik adalah 1720000000000 milidetik. Sebaliknya, bagi 1.000.

Mengapa Date JavaScript memakai milidetik?

Timestamp numerik Date di JavaScript didefinisikan sebagai milidetik sejak Unix epoch. Itu sebabnya new Date(unixSeconds) salah jika unixSeconds adalah detik Unix.

Apakah timestamp 10 digit selalu detik?

Tidak. Untuk tanggal modern sering ya, dan 13 digit sering milidetik. Jumlah digit adalah petunjuk, bukan aturan. Pastikan dengan dokumentasi atau tanggal yang masuk akal.

Apakah Unix timestamp berisi zona waktu?

Tidak. Unix timestamp adalah suatu instant dihitung dari 1970-01-01 00:00:00 UTC. Zona waktu memengaruhi tampilan, bukan angkanya sendiri.