Unix Timestamp: Detik Lompat, Masalah Tahun 2038, dan Jebakan Zona Waktu
Oleh Redaksi Safe Local Tools
Unix timestamp adalah bilangan bulat yang tampak sederhana tetapi menyembunyikan tiga kekacauan: kalender sipil, zona waktu politik, dan lebar kata perangkat keras. Perlakukan sebagai "instant UTC" untuk penalaran global—tetapi jangan lupa jam lokal banyak wilayah bergeser dua kali setahun untuk daylight saving.
Insinyur menyimpan detik sejak 1970-01-01T00:00:00Z karena perbandingan dan aritmatika durasi rapi—sampai lokalisasi, detik lompat, offset historis, atau overflow bertanda 32‑bit muncul.
Panduan ini membahas filosofi detik lompat versus timestamp POSIX sehari‑hari, menjelaskan overflow Tahun 2038, mengatalog jebakan zona waktu yang mengubah komponen kalender secara tak terduga, serta mengapa Safe Local Tools mengonversi timestamp secara lokal di browser ketika Anda men-debug log produksi tanpa menempel ID internal ke konverter SaaS gelap.

Unix time seperti yang dipakai mayoritas developer
Umumnya "Unix time" menghitung detik non‑lompat sejak epoch dalam UTC.
Pustaka memetakan timestamp ke komponen kalender menggunakan basis data zona IANA yang memelihara aturan daylight saving.
Detik lompat: astronomi versus timer perangkat lunak
Rotasi Bumi tidak mulus; UTC menyisipkan detik lompat sesekali agar tetap selaras dengan gagasan astronomis "hari".
Stack perangkat lunak berselisih historis tentang apakah timestamp harus "smear", mengulang, atau melompati.
Untuk log, timestamp biasanya cukup monoton setelah pipeline normalisasi; untuk pengukuran latensi, gunakan jam monoton seperti performance.now daripada konversi dinding.
Tahun 2038 dan overflow bertanda 32‑bit
Menyimpan detik sebagai bilangan bertanda 32‑bit klasik (time_t) melampaui sekitar 2038‑01‑19.
Mitigasi: persistensi dengan bilangan 64‑bit atau string ISO‑8601 dengan offset eksplisit untuk format arsip.
Audit firmware tersemat dan basis data lawas meskipun layanan Node Anda 64‑bit.
JWT exp, cookie Max‑Age, dan skew jam
exp JWT adalah NumericDate detik sejak epoch—validator membandingkan dengan "sekarang" dari jam dinding yang bisa drift ketika kontainer bangkit dari snapshot.
Bias toleransi beberapa puluh detik ada persis karena sinkronisasi global tidak pernah sempurna.
Penyesuaian NTP versus insiden keamanan
Administrator kadang menjepret jam drastis setelah remediasi NTP yang dikompromikan—trace tersebar bisa menampilkan durasi negatif mustahil kecuali Anda beri metadata koreksi manual.
Zona waktu adalah kebijakan bukan fisika
Basis data IANA menyandikan transisi DST yang bisa berubah dengan pemberitahuan politik singkat.
Bug klasik: menyimpan komponen lokal tanpa offset selama celah musim semi ketika jam tidak ada.
Lebih baik simpan instant UTC dengan offset eksplisit ketika rekonstruksi niat manusia masa lalu penting secara forensik.
Lipatan DST menghasilkan jam lokal duplikat
Saat jam mundur, satu jam civil berulang—tanpa metadata offset Anda tidak bisa membedakan kejadian pertama versus kedua dalam audit.
Pipeline log harus mencatat epoch UTC bersama string lokalisasi ketika kejelasan forensik dibutuhkan.
Campuran float versus integer untuk timestamp
Terkadang orang mencampur detik dan milidetik secara tidak sengaja dan mengalikan kesalahan di dashboard agregasi—normalisasi unit di perbatasan ingest dengan validasi skema.
Bahaya parsing string ambigu
Utamakan ISO‑8601 dengan sufiks zona untuk interchange.
Date.parse pada format bebas mengundang inkonsistensi historis antar mesin.
Jam monoton untuk backoff dibanding jam dinding untuk tampilan
Timer retry harus mengacu sumber monoton yang kebal lonjakan admin.
Ini berbeda dari menampilkan stempel waktu kepada manusia.
Basis data: TIMESTAMP versus TIMESTAMPTZ
TIMESTAMP WITHOUT TIME ZONE mengundang analis mengira mereka menyimpan "waktu lokal" sementara mesin membaca melalui zona sesi—bagus untuk demo, berbahaya untuk log audit lintas wilayah.
Kebiasaan emas: persist instant sebagai UTC (timestamptz atau ISO) dan lokalkan hanya pada lapisan presentasi.
Aritmatika kalender bukan sekadar menjumlahkan detik
"Jam kerja sama minggu depan" mengikuti kalender tidak beraturan—bukan kelipatan tetap detik.
Langganan dan penagihan sering memerlukan makna kalender bulanan eksplisit; mencampur dengan penambahan durasi mentah menghasilkan tagihan ganda atau terlewat.
Safe Local Tools dan debugging sensitif
Responder insiden sering menerjemahkan epoch dari log ke momen manusiawi; mengunggah pengidentifikasi proprietari ke situs konverter memperluas permukaan pengungkapan yang tidak perlu.
Konversi Safe Local Tools dilakukan melalui pemrosesan browser‑lokal yang selaras dengan alur kerja debug sensitif—tetap silangkan dengan pemantauan otoritatif Anda.
Daftar migrasi singkat untuk skema lawas
Inventarisasi kolom epoch 32‑bit.
Standarkan sufiks eksplisit _ms versus _s pada kolom API.
Dual‑write ISO UTC untuk audit bersama epoch numerik untuk join analitik.
Kebiasaan praktis menghindari kejutan bertugas
Selama outage log kedua epoch milidetik dan string ISO UTC sampai dashboard menyatu.
Uji konversi di perbatasan DST untuk wilayah pelanggan utama.
Dokumentasikan unit sekali dalam kontrak API dan lint nama bidang yang ambigu seperti time.
Penyimpanan kolomar dan partisi
ClickHouse atau BigQuery sering menyimpan event_time sebagai epoch ms.
Pastikan definisi partisi mengikuti UTC midnight dengan konsisten—mencampur detik dan ms menyebabkan kesalahan diam‑diam 1000× pada rasio pertumbuhan.
Timestamp Unix menjinakkan pengurutan tersebar sampai politik kalender ikut campur—maka offset eksplisit, bilangan lebih lebar, dan parsing disiplin lebih penting dari pintasan pintar.
Saat Anda butuh konversi cepat sambil memeriksa trace dan klaim JWT secara berdampingan, Coba Konverter Unix Timestamp →