Pengonversi Waktu Epoch Unix & Generator Stempel Waktu Perselisihan

Ubah stempel waktu zaman Unix menjadi tanggal yang dapat dibaca manusia dan sebaliknya. Hasilkan stempel waktu Discord yang dapat disalin dan ditempel secara real-time.

Waktu Epoch Unix Real-time
detik 0000000000
milidetik 0000000000000
Waktu Lokal
-
Waktu UTC
-
Unix Epoch (sec)
-
Unix Epoch (ms)
-
Waktu Relatif
-
Perbandingan Linimasa Zona Waktu Slide this handle to synchronize and visually compare the local and UTC dates and times across all selected timezones in real time.

Geser bilah linimasa untuk membandingkan waktu secara visual di berbagai zona waktu.

-12h -6h UTC (0) +6h +12h

                                
                            

Sinkronisasi sistem database terdistribusi, pencatatan kejadian aplikasi, dan debugging payload API memerlukan metode pelacakan waktu yang sangat presisi dan terstandarisasi. Standarisasi pada waktu zaman Unix memberikan bilangan bulat yang tidak dapat diubah dan tidak bergantung pada zona waktu yang mewakili jumlah detik yang telah berlalu sejak 1 Januari 1970. Panduan komprehensif ini merinci mekanisme stempel waktu Unix, menunjukkan metode konversi terprogram di lingkungan modern, dan menjelaskan cara mengurai struktur waktu alternatif seperti ID kepingan salju Discord.

Memahami zaman Unix dan dinamika stempel waktu

Waktu Unix (juga dikenal sebagai zaman Unix, waktu POSIX, atau stempel waktu Unix) melacak kemajuan kronologis sebagai bilangan bulat yang bertambah. Ini mewakili hitungan detik yang telah berlalu sejak titik referensi 1 Januari 1970, 00:00:00 UTC (representasi ISO 8601: 1970-01-01T00:00:00Z). Tepat pada saat ini, penghitung berada tepat di 0.

Stempel waktu zaman tidak bergantung pada zona waktu. Bilangan bulat mewakili instan universal tunggal di seluruh dunia, dan aplikasi klien lokal menyesuaikan lapisan presentasi dengan menerapkan offset UTC tertentu. Untuk melihat cara kerja pemetaan zona waktu, bandingkan interpretasi lokal dari stempel waktu 1577923200:

Wilayah zona waktu Tanggal dan waktu yang dilokalkan Nilai offset
GMT / UTC Kamis, 2 Januari 2020, 00:00:00 UTC+00:00
India (Kolkata) Kamis, 2 Januari 2020, 05:30:00 UTC+05:30
Amerika (New York) Rabu, 1 Januari 2020, 19:00:00 UTC-05:00

Waktu Unix tidak memperhitungkan detik kabisat. Sebaliknya, ini mengasumsikan setiap hari kalender berisi tepat 86.400 detik. Karena detik kabisat diabaikan dalam penghitung (memiliki nilai stempel waktu yang sama persis dengan detik sebelumnya), waktu zaman Unix tidak mempertahankan sinkronisasi linier yang sempurna dengan Waktu Universal Terkoordinasi (UTC) dalam rentang geologis yang panjang. Untuk tanggal sebelum ambang batas awal 1 Januari 1970, sistem menggunakan nilai bilangan bulat negatif (misalnya, -86400 menunjukkan 31 Desember 1969, 00:00:00 UTC).

Untuk bekerja dengan angka-angka ini dalam pemodelan database atau tugas pekerja latar belakang, pengembang mengandalkan interval kronologis yang tetap. Daftar berikut memetakan satuan standar ke nilai pastinya dalam hitungan detik:

  • 1 Jam: 3.600 detik
  • 1 Hari: 86.400 detik
  • 1 Minggu: 604.800 detik
  • 1 Bulan (Dihitung 30,44 hari): 2.629.743 detik
  • 1 Tahun (Dihitung 365,24 hari): 31.556.926 detik

Menghitung nilai durasi secara langsung dengan nilai-nilai ini memudahkan penanganan jadwal cron, token JWT yang kedaluwarsa, atau membuat indeks TTL khusus di database NoSQL.

Detik vs. milidetik: Menavigasi presisi digit

Stempel waktu dalam perangkat lunak modern dijalankan pada berbagai tingkat presisi bergantung pada kebutuhan aplikasi. Kebanyakan desain sistem menggunakan salah satu dari empat resolusi berikut:

  1. Detik (format 10 digit): Misalnya, 1735689600. Ini adalah resolusi standar yang digunakan oleh Python, PHP, database relasional (seperti PostgreSQL dan MySQL), dan lingkungan shell Linux.
  2. Milidetik (format 13 digit): Misalnya, 1735689600000. Format ini merupakan standar dalam JavaScript, Java, dan sebagian besar API web berbasis JSON modern.
  3. Mikrodetik (format 16 digit): Misalnya, 1735689600000000. Biasanya disediakan untuk penelusuran presisi tinggi, pencatatan sistem, dan platform diagnostik tingkat rendah.
  4. Nanodetik (format 19 digit): Digunakan dalam sistem pelacakan tingkat kernel khusus dan jaringan pemrosesan waktu nyata.

Untuk mengonversi detik ke milidetik, kalikan nilai bilangan bulat dengan 1.000. Sebaliknya, untuk mengubah milidetik kembali ke detik standar, terapkan pembagian bilangan bulat dengan 1.000 untuk menghapus digit terakhir.

Memahami landmark dan stempel waktu Unix yang berurutan memberikan perspektif yang jelas tentang perkembangan dan skala kronologis:

Stempel waktu Unix Tanggal dan waktu UTC yang setara Konteks pencapaian
0 Kamis, 1 Januari 1970, 00:00:00 UTC Zaman Unix
1.000.000.000 Minggu, 9 September 2001, 01:46:40 UTC Tonggak sejarah satu miliar detik
1.234.567.890 Jumat, 13 Februari 2009, 23:31:30 UTC Perkembangan angka desimal berurutan
1.735.689.600 Rabu, 1 Januari 2025, 00:00:00 UTC Awal tahun 2025
2.000.000.000 Selasa, 18 Mei 2033, 03:33:20 UTC Tonggak sejarah dua miliar detik
2.147.483.647 Selasa, 19 Januari 2038, 03:14:07 UTC Batas maksimum absolut yang ditandatangani 32-bit

Masalah Tahun 2038: Mengapa sistem 32-bit gagal

Sistem lama, firmware tertanam, dan skema database yang menyimpan stempel waktu Unix sebagai bilangan bulat 32-bit yang ditandatangani pada akhirnya akan mengalami batas overflow. Integer 32-bit yang ditandatangani hanya dapat menyimpan nilai hingga 2,147,483,647. Titik puncak tepatnya terjadi pada 19 Januari 2038, pukul 03:14:07 UTC.

Pada detak berikutnya pada jam sistem (03:14:08 UTC), penghitung bilangan bulat meluap dan mencapai batas negatif minimum -2,147,483,648. Sistem yang gagal menangani transisi ini akan menafsirkan tanggal tersebut sebagai 13 Desember 1901. Hal ini akan memicu kerusakan sistem, pembatalan sertifikat, kesalahan sistem file, dan kueri database yang rusak.

Metode terprogram untuk mengonversi dan menghasilkan stempel waktu Unix

Untuk membantu pengembang mengetahui waktu saat ini dan melakukan konversi, tabel di bawah menguraikan metode untuk mengambil stempel waktu zaman standar dan mengonversi nilai umum (menggunakan 1800000000 sebagai referensi) kembali ke waktu lokal dalam berbagai bahasa dan platform.

Bahasa / Platform Zaman Saat Ini (Detik) Ubah Zaman menjadi Tanggal
JavaScript Matematika.lantai(Tanggal.sekarang() / 1000) Tanggal baru(1800000000 * 1000).toLocaleString()
ular piton int(waktu.waktu()) waktu.ctime(1800000000)
Jawa Instan.sekarang().getEpochSecond() SimpleDateFormat baru("MM/dd/yyyy HH:mm:ss").format(Tanggal baru(1800000000L * 1000))
Pergi waktu.Sekarang().Unix() waktu.Unix(1800000000, 0)
PHP waktu() tanggal('r', 1800000000)
Rubi Waktu.sekarang.ke_i Waktu.at(1800000000)
C# DateTimeOffset.Sekarang.ToUnixTimeSeconds() DateTimeOffset.FromUnixTimeSeconds(1800000000).LocalDateTime
C++ durasi_cast(system_clock::now().time_since_epoch()).count()
Karat SystemTime::sekarang().duration_since(UNIX_EPOCH).unwrap().as_secs()
Perl waktu skalar waktu lokal (1800000000)
PostgreSQL PILIH EKSTRAK(EPOCH DARI sekarang()); PILIH TO_TIMESTAMP(1800000000);
MySQL PILIH UNIX_TIMESTAMP(SEKARANG()); PILIH DARI_UNIXTIME(1800000000);
SQLServer PILIH TANGGAL( KEDUA, '01-01-1970', GETUTCDATE()); PILIH TANGGALADD( KEDUA, 1800000000, '01-01-1970');
SQLite PILIH unixepoch(); PILIH tanggalwaktu(1800000000, 'unixepoch');
Unix/Linux Shell tanggal +%s tanggal -ud @1800000000
macOS tanggal +%s tanggal -j -r 1800000000
PowerShell [DateTimeOffset]::Sekarang.ToUnixTimeSeconds() [DateTimeOffset]::FromUnixTimeSeconds(1800000000).LocalDateTime
Excel / Lembar =(A1 / 86400) + 25569

Zaman khusus dan generator stempel waktu kepingan salju Discord

Arsitektur yang berbeda menggunakan zaman referensi khusus dan resolusi peningkatan bergantung pada platform perangkat keras, database, atau spesifikasi aplikasi. Beberapa format tersebut antara lain:

  • Stempel Waktu LDAP: Dihitung dalam blok 100 nanodetik mulai 1 Januari 1601.
  • .NET DateTime Ticks: Dihitung dalam blok 100 nanodetik mulai dari Tahun Gregorian 1.
  • Stempel Waktu Chrome/WebKit: Hitungan dalam mikrodetik mulai 1 Januari 1601.
  • Mac HFS+: Menghitung dalam hitungan detik mulai 1 Januari 1904.
  • Stempel Waktu NTP: Hitungan dalam detik mulai 1 Januari 1900.
  • Waktu GPS: Dihitung dalam hitungan detik dan minggu mulai tanggal 6 Januari 1980.
  • Stempel Waktu SAS: Menghitung dalam hitungan detik atau hari mulai tanggal 1 Januari 1960.
  • Data Inti Kakao: Dihitung dalam hitungan detik mulai 1 Januari 2001.
  • Excel OADate: Menghitung dalam pecahan hari mulai tanggal 1 Januari 1900.
  • Stempel Waktu FAT: Hitungan dalam detik mulai dari tahun 1980 atau 2000.
  • Hari Julian: Mengukur kemajuan kronologis dalam beberapa hari dari titik referensi astronomi kuno.
  • Snowflake ID: Format pengindeksan stempel waktu terdesentralisasi yang digunakan oleh Discord dan Twitter (X).

Memahami stempel waktu Discord dan ID kepingan salju

Discord menghasilkan bilangan bulat unsigned 64-bit yang unik dan terdesentralisasi (ID kepingan salju) untuk mengidentifikasi objek seperti pesan, saluran, server, dan pengguna. Tidak seperti bilangan bulat yang bertambah standar atau UUID overhead tinggi, kepingan salju Discord menyematkan waktu pembuatan yang tepat di dalam ID itu sendiri, yang membantu kinerja dalam sistem terdistribusi.

Struktur ID kepingan salju Discord dibagi menjadi empat komponen berbeda:

  • Stempel Waktu (42 bit): Mewakili milidetik yang berlalu sejak zaman Discord khusus (disetel ke 1 Januari 2015, pukul 00:00:00 UTC, setara dengan stempel waktu Unix 1420070400000).
  • ID Pekerja (5 bit): Mewakili indeks pekerja server internal.
  • ID Proses (5 bit): Mewakili indeks proses internal.
  • Peningkatan (12 bit): Penghitung berurutan yang disetel ulang ke 0 setiap milidetik per proses.

Untuk menampilkan tanggal yang dapat dibaca dalam pesan Discord yang menyesuaikan secara otomatis dengan zona waktu lokal pengguna yang melihat, pengembang menggunakan generator stempel waktu Discord. Memasukkan stempel waktu Unix standar ke generator ini menghasilkan string penurunan harga yang diformat. Tabel di bawah mencantumkan format penataan gaya yang tersedia:

Sintaks penurunan harga Contoh keluaran (untuk Unix 1735689600) Deskripsi gaya tampilan
<t:1735689600:t> 00:00 Waktu Singkat
<t:1735689600:T> 00:00:00 Lama sekali
<t:1735689600:d> 01/01/2025 Tanggal Singkat
<t:1735689600:D> 1 Januari 2025 Tanggal Panjang
<t:1735689600:f> 1 Januari 2025 00:00 Tanggal/Waktu Singkat
<t:1735689600:F> Rabu, 1 Januari 2025 00:00 Tanggal/Waktu Panjang
<t:1735689600:R> dalam 5 tahun / 5 tahun yang lalu Waktu Relatif

Mengoptimalkan alur kerja waktu dalam sistem terdistribusi

Mengelola penghitungan waktu dalam sistem terdistribusi modern memerlukan pendekatan standar untuk mencegah penyimpangan zona waktu, bug ukuran muatan, dan error overflow. Standarisasi struktur database pada zaman Unix standar menyederhanakan tugas manipulasi waktu, memastikan operasi yang konsisten di seluruh layanan mikro dan antarmuka eksternal.

Saat mendesain API atau mengonfigurasi antrean pesan, ingatlah tiga pedoman berikut:

  1. Simpan waktu dalam format UTC atau bilangan bulat zaman: Jaga agar lapisan persistensi tetap bersih dari offset zona waktu lokal. Terapkan pelokalan secara eksklusif pada lapisan presentasi.
  2. Prioritaskan representasi 64-bit: Saat mendesain kolom database atau memilih struktur pemrograman, migrasikan dari tipe 32-bit untuk mencegah kelebihan runtime Tahun 2038.
  3. Pilih presisi yang sesuai: Cocokkan spesifikasi sistem (misalnya, menggunakan milidetik untuk peristiwa API dan nanodetik hanya saat melacak akuisisi kunci terdistribusi).

Saat mengonversi stempel waktu atau memeriksa zaman menggunakan utilitas browser, keamanan dan privasi adalah yang terpenting. Alat konversi Toolsaur menerapkan filosofi ini secara langsung: "Semua pemrosesan berjalan secara lokal di browser Anda. Data Anda tidak pernah dikirim ke server kami." Hal ini menjamin bahwa log sistem sensitif yang berisi stempel waktu database tidak pernah bocor ke titik akhir pihak ketiga.

Pertanyaan yang sering diajukan tentang konverter zaman

Mengapa stempel waktu Unix tidak bergantung pada zona waktu?

Stempel waktu Unix mewakili waktu berlalu absolut sejak satu titik referensi global (1 Januari 1970, pukul 00:00:00 UTC). Karena titik awal referensi ini identik terlepas dari lokasi geografisnya, bilangan bulat stempel waktu yang dihitung tetap sama. Penyesuaian zona waktu lokal hanya diterapkan saat memformat stempel waktu menjadi string tanggal yang dapat dibaca manusia dalam antarmuka klien.

Apa perbedaan antara stempel waktu 10 digit dan 13 digit?

Stempel waktu 10 digit mewakili presisi dalam hitungan detik (misalnya, 1735689600), yang umum untuk sistem operasi POSIX, Python, dan database SQL. Stempel waktu 13 digit mewakili presisi dalam milidetik (misalnya, 1735689600000), yang merupakan standar untuk waktu proses JavaScript, Java, dan REST API modern. Berpindah di antara keduanya memerlukan perkalian atau pembagian dengan 1.000.

Bagaimana dampak masalah Tahun 2038 terhadap database modern?

Jika kolom database menyimpan stempel waktu Unix menggunakan tipe data bilangan bulat 32-bit yang ditandatangani (seperti INT dalam skema database lama), rekaman apa pun dengan stempel waktu di luar 19 Januari 2038, 03:14:07 UTC akan menyebabkan overflow. Ini menggabungkan angka tersebut menjadi nilai negatif, menafsirkan tanggal yang akan datang sebagai 13 Desember 1901. Sistem harus memigrasikan kolom ini ke bilangan bulat 64-bit yang ditandatangani (BIGINT).

Bagaimana waktu Unix menangani detik kabisat?

Waktu Unix tidak memperhitungkan detik kabisat dan mengasumsikan setiap hari memiliki tepat 86.400 detik. Ketika detik kabisat terjadi, stempel waktu Unix diulang atau dihentikan selama satu detik. Pilihan desain ini menyederhanakan perhitungan matematika namun menyebabkan sedikit penyimpangan dari garis waktu Waktu Universal Terkoordinasi (UTC) yang tepat.

Apa itu ID kepingan salju Discord dan apa bedanya dengan stempel waktu Unix standar?

ID kepingan salju Discord adalah bilangan bulat khusus 64-bit yang tidak ditandatangani yang mengkodekan stempel waktu pembuatan bersama dengan metadata arsitektur server (ID pekerja, ID proses, dan kenaikan lokal). Tidak seperti stempel waktu Unix 10 digit standar dalam hitungan detik, ID kepingan salju menggunakan periode khusus yang dimulai pada 1 Januari 2015, dan melacak interval dalam milidetik, menyimpan waktu presisi tinggi ini dalam 42 bit pertama ID.

Bagaimana Anda bisa mengonversi stempel waktu Epoch di Microsoft Excel?

Excel melacak tanggal sebagai jumlah hari yang berlalu sejak 1 Januari 1900. Untuk mengonversi stempel waktu Unix 10 digit standar (detik) di sel A1 menjadi tanggal yang dapat dibaca di Excel, terapkan rumus =(A1 / 86400) + 25569, dengan 86400 adalah jumlah detik dalam sehari dan 25569 adalah selisih hari antara zaman Excel dan zaman Unix. Atur format sel ke "Tanggal" atau "Waktu" untuk melihat hasilnya.