Ringkas: timestamp Unix adalah jumlah detik yang berlalu sejak tengah malam UTC pada 1 Januari 1970. Log dan API memakainya karena tak ambigu dan bebas zona waktu. Dua hal yang menjebak: membedakan detik dari milidetik, dan lupa bahwa angka mentah selalu UTC sampai Anda mengonversinya ke zona lokal.

Saat membandingkan entri antar-server, bilangan bulat lebih mudah dinalar daripada tanggal terformat: tanpa zona waktu, tanpa lokal, tanpa ambiguitas waktu musim panas. Namun sifat mentah itu jugalah sebab sebuah timestamp yang terlepas dari konteks bisa salah dibaca.

Mengapa timestamp mulai pada 1970

Epoch Unix adalah tengah malam UTC pada 1 Januari 1970, dipilih oleh pengembang Unix awal di Bell Labs sebagai titik acuan sederhana dan tetap. Setiap timestamp Unix hanyalah hitungan detik sejak momen itu, yang menjadikan aritmetika — «berapa lama antara dua peristiwa ini?» — sekadar pengurangan.

Detik atau milidetik?

Ini kesalahan paling umum saat membaca log. Aturan praktis: jika nilainya memiliki lebih dari 11 digit (lebih besar dari sekitar 10¹¹), hampir pasti milidetik. Timestamp saat ini dalam detik sekitar 1,7 miliar (sepuluh digit); momen yang sama dalam milidetik sekitar 1,7 triliun (tiga belas digit). Umpankan nilai milidetik ke pengurai berbasis detik, dan Anda mendarat puluhan ribu tahun di masa depan.

Timestamp selalu UTC

Timestamp Unix mengodekan momen mutlak, bukan waktu jam dinding lokal. Untuk menampilkannya ke manusia, Anda menerapkan zona waktu: angka yang sama adalah «14.30 di London» dan «09.30 di New York». Mengonversi dua arah dengan rapi berarti tegas soal zona yang dimaksud: konverter yang baik memakai basis data zona waktu IANA standar dan API Intl.DateTimeFormat agar offset (termasuk waktu musim panas) benar untuk tanggal itu.

ISO 8601 untuk apa pun yang Anda simpan atau bagikan

Ketika timestamp harus terbaca manusia sekaligus aman bagi mesin, gunakan ISO 8601: 2024-03-15T14:30:00.000Z. T memisahkan tanggal dan waktu, Z menandai UTC. Ia terurut benar sebagai teks polos dan menghilangkan tebak-tebakan detik-vs-milidetik bagi pembaca berikutnya.

Catatan 2038

Sistem yang menyimpan timestamp sebagai bilangan bulat bertanda 32 bit meluap pada 19 Januari 2038. Sebagian besar platform modern telah beralih ke waktu 64 bit, tetapi berguna diketahui saat menemui sistem lawas atau kolom basis data berlebar tetap.

Alur praktis

  1. Salin nilai mentah dari log atau respons API Anda.
  2. Tempel ke Konverter Timestamp, yang otomatis mendeteksi detik vs milidetik dan menampilkan tanggal di zona pilihan.
  3. Sebelum mengurangi, konversikan kedua peristiwa yang dibandingkan ke zona yang sama (atau pertahankan keduanya di UTC).
  4. Simpan atau bagikan hasilnya sebagai ISO 8601 agar tak memunculkan ambiguitas lagi. Padukan dengan Penghitung Karakter jika Anda merapikan cuplikan log untuk tiket.

Kesalahan umum yang harus dihindari

  • Mencampur detik dan milidetik dalam perbandingan yang sama.
  • Mengira timestamp mentah sudah dalam waktu lokal.
  • Membandingkan dua peristiwa yang ditampilkan di zona berbeda.
  • Memakai kolom waktu 32 bit berlebar tetap yang tak sanggup melewati 2038.