Apa itu Unix Timestamp? Panduan Lengkap
Apa itu Unix Timestamp?
Unix timestamp (juga disebut POSIX time atau Epoch time) adalah sistem untuk melacak waktu yang menghitung jumlah detik yang telah berlalu sejak Unix epoch — 00:00:00 UTC pada 1 Januari 1970 — tidak termasuk detik kabisat.
Tidak seperti tanggal yang dapat dibaca manusia yang bervariasi menurut zona waktu ("19 Juli 2026, 15:30 EST"), Unix timestamp adalah bilangan bulat tunggal yang mewakili momen yang sama di mana pun di Bumi. Misalnya, timestamp 1785292800 berkorespondensi dengan instan tertentu terlepas dari apakah Anda berada di New York, London, atau Tokyo.
Unix timestamp adalah tulang punggung penanganan waktu dalam komputasi modern. Sistem operasi, bahasa pemrograman, basis data, dan sistem file semuanya mengandalkan representasi bilangan bulat sederhana ini di balik layar.
Unix Epoch: Mengapa 1 Januari 1970?
Pemilihan 1 Januari 1970 sebagai "epoch" (titik awal) bukanlah hal yang sembarangan. Beberapa pertimbangan praktis menyebabkan keputusan ini:
- Pengembangan awal Unix: Sistem operasi Unix dikembangkan di Bell Labs pada akhir 1960-an dan awal 1970-an. Pada saat sistem waktu distandarisasi pada awal 1970-an, 1 Januari 1970 adalah titik referensi yang bersih dan baru.
- Kesederhanaan: Waktu pada sistem Unix awal disimpan sebagai bilangan bulat bertanda 32-bit yang menghitung detik. Menggunakan tanggal yang baru memaksimalkan rentang yang dapat direpresentasikan ke masa depan.
- Preseden: Epoch diformalkan dalam standar POSIX pertama, menjadikannya referensi universal untuk sistem turunan Unix.
Sistem mirip Unix sebelumnya telah menggunakan tanggal epoch yang berbeda, tetapi epoch 1970 menang dan telah menjadi standar untuk semua sistem yang sesuai POSIX sejak saat itu.
Cara Kerja Nilai Timestamp
Ide dasarnya sederhana:
- Timestamp
0berarti tepat 1 Januari 1970, 00:00:00 UTC - Timestamp
86400(60 × 60 × 24) berarti 2 Januari 1970, 00:00:00 UTC - Timestamp
-3600berarti 31 Desember 1969, 23:00:00 UTC (timestamp negatif mewakili tanggal sebelum epoch)
Rumusnya sederhana:
timestamp = detik sejak 1970-01-01 00:00:00 UTC
Timestamp Milidetik
Banyak sistem modern, khususnya JavaScript dan API web, menggunakan milidetik alih-alih detik. Timestamp milidetik hanyalah nilai berbasis detik dikalikan 1000:
Date.now()di JavaScript mengembalikan milidetiktime.time()di Python mengembalikan detik sebagai float dengan milidetik pecahan
Selalu verifikasi resolusi yang digunakan sistem sebelum mengonversi, karena mencampurkannya dapat menghasilkan tanggal yang meleset puluhan tahun.
Masalah Year 2038
Masalah Year 2038 (juga disebut "Unix Millennium Bug" atau "Y2K38") adalah masalah representasi waktu yang akan memengaruhi sistem yang menyimpan timestamp sebagai bilangan bulat bertanda 32-bit.
Bilangan bulat bertanda 32-bit dapat menampung nilai dari sekitar -2,1 miliar hingga +2,1 miliar. Unix timestamp maksimum yang dapat direpresentasikan adalah 2147483647, yang berkorespondensi dengan:
- 19 Januari 2038, 03:14:07 UTC
Satu detik kemudian, nilainya akan meluap ke -2147483648, yang mewakili 13 Desember 1901 — menyebabkan sistem menginterpretasikan waktu saat ini sebagai tanggal dari awal abad ke-20.
Sistem Mana yang Terpengaruh?
- Perangkat tertanam dan perangkat keras IoT dengan prosesor 32-bit
- Kernel Linux tertanam yang lebih lama
- Basis data lawas yang menggunakan kolom waktu bilangan bulat 32-bit
- Sistem file dan format biner yang menyimpan waktu sebagai bilangan bulat 32-bit
Solusinya
Sistem modern sebagian besar telah beralih ke bilangan bulat 64-bit untuk penyimpanan waktu. Bilangan bulat bertanda 64-bit dapat mewakili waktu hingga sekitar 292 miliar tahun ke masa depan — secara efektif tak terbatas untuk tujuan praktis apa pun.
- Sebagian besar distribusi Linux modern pada perangkat keras 64-bit sudah aman
- Kernel Linux telah menggunakan time_t 64-bit pada sistem 64-bit selama bertahun-tahun
- Kernel 5.6+ memperkenalkan dukungan time_t 64-bit untuk arsitektur 32-bit
- Bahasa pemrograman seperti Python, Go, dan Java menggunakan bilangan bulat 64-bit secara internal
Jika Anda memelihara sistem tertanam atau perangkat lunak lawas, memeriksa ukuran time_t Anda adalah latihan yang berharga hari ini.
UTC dan Hubungannya dengan Unix Timestamp
Unix timestamp secara inheren tidak bergantung pada zona waktu — mereka selalu merujuk ke UTC.
Apa itu UTC?
Coordinated Universal Time (UTC) adalah standar waktu utama yang digunakan dunia untuk mengatur jam dan waktu. Ini menggantikan Greenwich Mean Time (GMT) sebagai standar internasional dan dipelihara oleh jam atom.
Mengapa UTC Penting untuk Unix Timestamp
- Unix timestamp didefinisikan dalam UTC, sehingga sebuah timestamp mewakili momen yang sama secara global
- Mengonversi Unix timestamp ke waktu lokal murni adalah masalah lapisan tampilan
- Tidak ada informasi zona waktu yang disimpan dalam timestamp itu sendiri, yang menjaga sistem tetap sederhana dan portabel
Desain ini berarti Anda dapat membagikan Unix timestamp kepada siapa pun di dunia dan kedua pihak dapat mengonversinya ke waktu lokal mereka sendiri tanpa ambiguitas.
Detik Kabisat: Pengecualian Langka
Unix timestamp secara teoritis menghitung detik sejak epoch, tetapi mereka mengabaikan detik kabisat. Sehari dengan detik kabisat yang ditambahkan tetap memiliki tepat 86400 detik dalam waktu Unix. Ini berarti bahwa selama detik kabisat, Unix timestamp tidak bertambah, dan detik kabisat secara efektif menghilang dari hitungan.
Penyederhanaan ini menjaga sistem tetap praktis tetapi berarti Unix timestamp sedikit menyimpang dari waktu atomik. Perbedaannya cukup kecil sehingga jarang menjadi masalah untuk aplikasi sehari-hari.
Rentang Timestamp Umum
| Timestamp | Tanggal yang Dapat Dibaca Manusia | Signifikansi | |-----------|---------------------|--------------| | 0 | 1970-01-01 00:00:00 UTC | Unix epoch | | 86400 | 1970-01-02 00:00:00 UTC | Satu hari setelah epoch | | 946684800 | 2000-01-01 00:00:00 UTC | Tahun 2000 | | 1234567890 | 2009-02-13 23:31:30 UTC | Pola yang mudah diingat | | 1785292800 | 2026-07-19 00:00:00 UTC | Epoch hari ini | | 2147483647 | 2038-01-19 03:14:07 UTC | Maksimum 32-bit |
Ringkasan
Unix timestamp adalah cara yang elegan dan portabel untuk merepresentasikan waktu sebagai bilangan bulat tunggal. Desainnya — menghitung detik dari 1 Januari 1970 UTC — menjadikannya standar waktu universal di seluruh sistem operasi, basis data, dan bahasa pemrograman. Meskipun masalah 2038 membayangi sistem lawas, transisi yang sedang berlangsung ke waktu 64-bit memastikan bahwa Unix timestamp akan tetap menjadi landasan penunjuk waktu komputasi untuk generasi yang akan datang.
Siap bekerja dengan Unix timestamp? Gunakan Unix Timestamp Converter kami untuk mengonversi secara instan antara timestamp dan tanggal yang dapat dibaca manusia.