Unix Timestamp Tanpa Kerumitan
Tanya tiga developer jam berapa sekarang dan Anda mungkin mendapat tiga jawaban, tergantung di mana mereka berada. Tanya Unix timestamp dan Anda mendapat tepat satu angka, sama untuk semua orang di planet ini. Satu bilangan bulat itulah mengapa epoch time secara diam-diam menopang hampir setiap file log, baris database, dan respons API yang pernah Anda sentuh. Halaman ini menjelaskan apa arti angka tersebut, cara membacanya dari kedua arah, dan di mana ia sering menjebak orang.

Apa sebenarnya Unix time itu
Unix timestamp adalah jumlah detik yang telah berlalu sejak 00:00:00 UTC pada 1 Januari 1970, tidak menghitung detik kabisat. Momen itu disebut epoch, dan dipilih oleh para insinyur Unix awal hanya karena merupakan tanggal bulat yang nyaman untuk dihitung. Pada epoch nilainya tepat 0. Setiap detik setelahnya menambahkan satu, jadi angkanya hanya terus bertambah. Tanggal sebelum 1970 juga valid, dinyatakan sebagai bilangan bulat negatif.
Anda juga akan melihat konsep ini disebut POSIX time atau, secara longgar, epoch time. Apapun labelnya, mekanismenya sama: satu penghitung detik yang terus meningkat. Karena merupakan bilangan bulat biasa daripada string berformat, komputer dapat menyimpannya dalam beberapa byte dan membandingkan dua di antaranya dengan satu pengurangan.
Detik, milidetik, dan kawan-kawannya
Unix time klasik menghitung detik penuh, menghasilkan angka sepuluh digit yang familiar yang Anda lihat hari ini. Namun banyak lingkungan membutuhkan resolusi yang lebih halus. JavaScript, misalnya, bekerja dalam milidetik, menghasilkan nilai tiga belas digit, dan beberapa sistem bahkan menggunakan mikrodetik atau nanodetik. Aturan praktis yang andal: angka sepuluh digit adalah detik, tiga belas digit adalah milidetik. Jika tanggal yang Anda konversi jatuh sekitar tahun 1970 ketika Anda mengharapkan hari ini, kemungkinan besar Anda memasukkan milidetik ke dalam field detik, atau sebaliknya. Konverter kami mendeteksi besarannya secara otomatis sehingga Anda jarang perlu menebak.
Mengapa developer mengandalkannya
Keuntungan besarnya adalah timestamp tidak bergantung pada zona waktu. Bilangan bulat 1735689600 merujuk ke momen yang sama di Tokyo, Berlin, dan Sao Paulo. Menyimpan angka tersebut alih-alih string lokal yang diformat berarti Anda tidak perlu bertanya-tanya jam berapa nilai tersebut berasal. Pengurutan juga sangat mudah, karena urutan kronologis adalah urutan numerik, sehingga indeks database pada kolom timestamp mengurutkan kejadian dengan benar tanpa perlu parsing. Aritmetika pun sama bersihnya: selisih antara dua kejadian adalah satu pengurangan, dan menambahkan sehari adalah menambahkan 86400. Sifat-sifat inilah yang menjadi alasan log, token, cache, dan antrean pesan semuanya menggunakan epoch time.
Konversi dua arah
Mengonversi dari timestamp ke tanggal yang dapat dibaca manusia berarti mengambil hitungan detik dan memproyeksikannya ke kalender, kemudian memformatnya dalam zona waktu yang Anda pedulikan. Sebaliknya, Anda mengambil tahun, bulan, hari, dan waktu, menentukan zona waktu yang digunakannya, dan menyeratnya kembali menjadi detik sejak epoch. Alat kami melakukan kedua arah secara instan dan sepenuhnya di browser Anda, sehingga tidak ada yang Anda tempelkan yang meninggalkan mesin Anda. Tempelkan angka untuk mendekodenya, atau pilih tanggal untuk mengenkodenya, dan baca hasilnya dalam UTC maupun waktu lokal Anda sekaligus.

UTC versus waktu lokal, jebakan klasik
Timestamp itu sendiri tidak memiliki zona waktu; selalu terpaut pada UTC. Kebingungan hanya muncul ketika Anda menampilkannya. Jika Anda mengonversi 1700000000 dan layar Anda menampilkan jam malam sementara rekan di negara lain melihat jam siang, tidak ada yang rusak; Anda berdua melihat momen yang sama yang dirender dalam jam lokal yang berbeda. Bug muncul ketika kode membaca tanggal lokal seolah-olah itu UTC, atau mencap waktu dinding tanpa mencatat offset-nya. Kebiasaan yang aman adalah menyimpan dan mengirimkan UTC, dan hanya menerapkan offset lokal di momen terakhir, ketika Anda menampilkan nilai kepada seseorang. Jika ragu, bandingkan dengan baris UTC di konverter daripada baris lokal Anda.
Masalah tahun 2038
Banyak sistem lama menyimpan Unix time dalam bilangan bulat bertanda 32-bit. Field tersebut kehabisan ruang satu detik setelah 03:14:07 UTC pada 19 Januari 2038, ketika penghitung meluap dan berputar ke angka negatif, berpotensi melemparkan tanggal kembali ke tahun 1901. Ini adalah masalah yang sama dengan Y2K. Kabar baiknya adalah sistem operasi dan bahasa modern sebagian besar telah beralih ke timestamp 64-bit, yang tidak akan meluap selama sekitar 292 miliar tahun, sehingga untuk kode baru ini sebagian besar merupakan keingintahuan historis yang layak diketahui daripada keadaan darurat.
Untuk pembantu berbasis browser lebih lanjut, lihat alat developer kami, dan jika Anda perlu mengerjakan angka-angkanya sendiri, kalkulator tersedia dengan satu klik.
Pertanyaan yang sering diajukan
Apa itu Unix timestamp?
Ini adalah jumlah detik sejak 00:00:00 UTC pada 1 Januari 1970, tidak menghitung detik kabisat. Momen awal itu disebut epoch, dan hitungannya hanya meningkat dari waktu ke waktu.
Mengapa angka saya dikonversi ke tanggal mendekati 1970?
Kemungkinan besar Anda mencampuradukkan detik dan milidetik. Angka sepuluh digit adalah detik dan angka tiga belas digit adalah milidetik. Memasukkan milidetik ke dalam field detik membagi waktu yang tampak dengan sekitar seribu, mendaratkan Anda mendekati epoch.
Apakah Unix timestamp memiliki zona waktu?
Tidak. Nilainya selalu terpaut pada UTC. Zona waktu baru masuk ketika Anda menampilkan timestamp sebagai tanggal yang dapat dibaca manusia, itulah mengapa angka yang sama dapat menampilkan waktu dinding yang berbeda untuk orang yang berbeda.
Bagaimana cara mengonversi tanggal kembali menjadi timestamp?
Berikan tahun, bulan, hari, dan waktu, tentukan zona waktu yang digunakannya, dan alat akan meratakannya menjadi detik sejak epoch. Anda dapat melakukan kedua arah di halaman ini secara instan di browser Anda.
Apa itu masalah tahun 2038?
Sistem yang menyimpan Unix time dalam bilangan bulat bertanda 32-bit meluap satu detik setelah 03:14:07 UTC pada 19 Januari 2038. Timestamp 64-bit modern menghindari ini selama miliaran tahun, sehingga sebagian besar perangkat lunak saat ini tidak terpengaruh.
Apakah data saya dikirim ke server?
Tidak. Konversi berjalan sepenuhnya di browser Anda, sehingga timestamp atau tanggal apa pun yang Anda tempelkan tetap di perangkat Anda sendiri.
