Apa itu Stempel Waktu Unix? Penjelasan Lengkap tentang Waktu Epoch
Jawaban Cepat
Stempel waktu Unix adalah jumlah detik sejak 1 Januari 1970, 00:00:00 UTC (zaman Unix). Ini tidak bergantung pada zona waktu dan mudah untuk dibandingkan. JavaScript menggunakan milidetik (13 digit); Unix dan sebagian besar APIs menggunakan detik (10 digit). Gunakan Pengonversi Stempel Waktu gratis kami untuk mengonversi antara stempel waktu dan tanggal yang dapat dibaca manusia.
Perkenalan
Stempel waktu Unix (juga disebut waktu zaman Unix, waktu POSIX, atau waktu Unix) adalah jumlah detik yang telah berlalu sejak 1 Januari 1970, 00:00:00 UTC — momen yang dikenal sebagai zaman Unix. Stempel waktu banyak digunakan dalam sistem operasi, database, log, dan APIs karena tidak bergantung pada zona waktu (selalu UTC), mudah dibandingkan (perbandingan bilangan bulat sederhana), dan ringkas. Namun, mereka tidak dapat dibaca manusia — 1693526400 tidak berarti apa-apa tanpa konversi. Panduan ini menjelaskan apa itu stempel waktu dan cara menggunakannya.
Langkah demi Langkah
-
Pahami zaman Unix
Zaman Unix adalah 1 Januari 1970, 00:00:00 Waktu Universal Terkoordinasi (UTC). Stempel waktu Unix adalah hitungan detik dari saat ini. Stempel waktu positif adalah setelah zaman; stempel waktu negatif (didukung oleh beberapa sistem) ada sebelumnya.
-
Bedakan detik dari milidetik
Stempel waktu Unix biasanya dalam hitungan detik (10 digit pada tahun 2026, misalnya 1693526400). Date.now() dan Date.getTime() JavaScript mengembalikan milidetik (13 digit, misalnya 1693526400000). Selalu periksa unit mana yang diharapkan oleh API — mencampurkannya adalah bug stempel waktu yang paling umum.
-
Pahami independensi zona waktu
Stempel waktu Unix selalu UTC. Mereka tidak bergantung pada zona waktu pengguna. Untuk menampilkan stempel waktu di zona waktu tertentu, ubah stempel tersebut menjadi tanggal dan terapkan offset zona waktu. Hal ini membuat stempel waktu ideal untuk penyimpanan dan perbandingan.
-
Pelajari tentang masalah Tahun 2038
Sistem yang menggunakan bilangan bulat bertanda 32-bit untuk stempel waktu akan meluap pada 19 Januari 2038, 03:14:07 UTC — 'masalah Y2038'. Sistem yang menggunakan bilangan bulat 64-bit atau angka JavaScript (float 64-bit) tidak terpengaruh. Sistem modern sebagian besar aman untuk Y2038, namun sistem tertanam lama mungkin tidak aman.
Contoh
Stempel waktu untuk tanggal yang diketahui
Masukan: 01-09-2023 00:00:00 UTC
Keluaran: 1693526400 (detik) atau 1693526400000 (milidetik)
Zaman Unix
Masukan: 01-01-1970 00:00:00 UTC
Keluaran: 0
Batasan masalah Y2038
Masukan: 19-01-2038 03:14:07 UTC
Keluaran: 2147483647 (maks bilangan bulat bertanda 32-bit)
Masalah Umum
- Mencampur detik dan milidetik —JavaScript menggunakan milidetik (Date.now()), Unix dan sebagian besar APIs menggunakan detik. Bagi dengan 1000 untuk mengubah ms menjadi detik; kalikan dengan 1000 untuk kebalikannya.
- Kebingungan zona waktu — stempel waktu adalah UTC. Saat menampilkan, konversikan ke zona waktu lokal pengguna atau tentukan UTC. Jangan terapkan offset pada stempel waktu mentah.
- Masalah Tahun 2038 —cap waktu bilangan bulat bertanda 32-bit meluap pada 19-01-2038. Gunakan bilangan bulat 64-bit atau angka JavaScript untuk menghindari hal ini.
- Stempel waktu negatif —tanggal sebelum 01-01-1970 memiliki stempel waktu negatif. Beberapa sistem tidak mendukungnya.
Kiat
- Selalu periksa apakah API mengharapkan detik atau milidetik —ini adalah bug stempel waktu yang paling umum.
- Gunakan string ISO 8601 (misalnya, "2023-09-01T00:00:00Z") untuk stempel waktu yang dapat dibaca manusia di APIs; gunakan zaman Unix untuk penyimpanan dan komputasi.
- JavaScript Date.now() mengembalikan milidetik; bagi dengan 1000 dan lantai untuk mendapatkan detik.
- Gunakan Pengonversi Stempel Waktu kami untuk mengonversi antara stempel waktu dan tanggal yang dapat dibaca manusia di browser Anda.