ByteCompress

Konverter Timestamp

Konversi timestamp Unix (detik atau milidetik sejak Epoch Unix) ke string tanggal-waktu yang dapat dibaca manusia, dan konversi tanggal kembali ke timestamp Unix. Mendukung zona waktu UTC dan lokal.

0 chars
FreeClient-sideNo signup

Waktu Unix mulai menghitung pada 1 Januari 1970 00:00:00 UTC - Epoch Unix. Setiap timestamp Unix adalah jumlah detik (atau milidetik dalam banyak sistem modern) yang berlalu sejak saat itu. Timestamp digunakan di seluruh pemrograman, basis data, dan API karena tidak tergantung pada zona waktu, dapat diurutkan sebagai bilangan bulat, dan mudah untuk dibandingkan secara aritmetika. Membaca 1711843200 sebagai angka mentah tidak memberi tahu Anda apa-apa. Konverter ini menerjemahkannya menjadi 2024-03-31T00:00:00.000Z secara instan, menggunakan ISO 8601 - standar tanggal internasional. Semua konversi berjalan secara lokal di browser Anda.

Cara Menggunakan Alat Ini

  1. Timestamp ke Tanggal: Masukkan timestamp Unix dalam detik atau milidetik - alat ini menunjukkan tanggal dalam UTC dan zona waktu lokal Anda.
  2. Tanggal ke Timestamp: Masukkan tanggal dan waktu menggunakan pemilih tanggal, lalu salin timestamp Unix yang dihasilkan dalam detik dan milidetik.
  3. Klik Sekarang untuk mengisi timestamp saat ini sebagai referensi.
  4. Gunakan pemilih format untuk menampilkan tanggal dalam format ISO 8601, RFC 2822, atau format yang dapat dibaca manusia.

Memahami Timestamp Unix

Detik vs Milidetik

Dua konvensi digunakan secara luas. Waktu Unix dalam detik (10 digit pada tahun 2024, misalnya, 1711843200) digunakan oleh API POSIX, C/C++ time(), time.time() Python, dan sebagian besar sistem sisi server. Waktu Unix dalam milidetik (13 digit, misalnya, 1711843200000) digunakan oleh Date.now() JavaScript, System.currentTimeMillis() Java, dan banyak API web. Aturan cepat: 10 digit berarti detik; 13 digit berarti milidetik. Timestamp bilangan bulat bertanda 32-bit yang valid terbesar adalah 2147483647 (detik), yang sesuai dengan 19 Januari 2038 - masalah Tahun 2038 untuk sistem lama.

Format ISO 8601

ISO 8601 adalah standar internasional untuk representasi tanggal dan waktu. Format UTC lengkap adalah YYYY-MM-DDTHH:mm:ss.sssZ, di mana T memisahkan tanggal dan waktu dan Z menunjukkan UTC (waktu Zulu). ISO 8601 adalah format yang direkomendasikan untuk respons API dan pertukaran data karena tidak ambigu, dapat diurutkan secara leksikografis (urutan string sesuai dengan urutan kronologis), dan dapat diparsing dalam setiap bahasa pemrograman utama.

Contoh

Timestamp ke Tanggal

Input (detik):         1711843200
Tanggal UTC (ISO 8601): 2024-03-31T00:00:00.000Z
RFC 2822:              Sun, 31 Mar 2024 00:00:00 +0000
Dapat dibaca manusia (UTC):  Minggu, 31 Maret 2024 pukul 12:00:00 AM UTC

Tanggal ke Timestamp

Input:                 2024-03-31 00:00:00 UTC
Unix (detik):        1711843200
Unix (milidetik):   1711843200000

Format Timestamp Umum

  • Unix detik (POSIX): 1711843200 - 10 digit, digunakan dalam C, Python, Go, sebagian besar API sistem
  • Unix milidetik: 1711843200000 - 13 digit, digunakan dalam JavaScript, Java, banyak REST API
  • ISO 8601 UTC: 2024-03-31T00:00:00Z - direkomendasikan untuk respons API dan penyimpanan data
  • ISO 8601 dengan offset: 2024-03-31T03:00:00+03:00 - mencakup offset zona waktu untuk waktu lokal yang tidak ambigu
  • RFC 2822: Sun, 31 Mar 2024 00:00:00 +0000 - digunakan dalam header email dan header Date HTTP
  • Referensi Epoch Unix: 0 = 1970-01-01T00:00:00Z

Praktik Terbaik

  • Simpan timestamp dalam UTC di basis data - konversi ke waktu lokal hanya di lapisan tampilan
  • Gunakan ISO 8601 untuk respons API - tidak ambigu dan dapat diparsing dalam semua bahasa
  • Utamakan milidetik dibandingkan detik untuk sistem baru untuk menghindari aritmatika floating-point dengan presisi sub-detik
  • Pindahkan penyimpanan timestamp 32-bit ke 64-bit untuk menghindari masalah overflow Tahun 2038

Untuk pengenal unik dengan timestamp yang disematkan, UUID v7 (RFC 9562) menggabungkan timestamp milidetik Unix dengan bit acak untuk ID yang dapat diurutkan dan unik - gunakan Generator UUID untuk UUID v4 ketika urutan tidak diperlukan. Untuk debugging respons JSON yang berisi timestamp, Formatter JSON membuat bidang timestamp bersarang dapat dibaca.

Pertanyaan Umum

Apa itu timestamp Unix?

Timestamp Unix adalah jumlah detik yang berlalu sejak Epoch Unix - tengah malam (00:00:00 UTC) pada 1 Januari 1970 - tidak termasuk detik kabisat. Ini tidak tergantung pada zona waktu, merupakan bilangan bulat sederhana, dan mudah untuk dibandingkan dan diurutkan. Timestamp Unix adalah representasi internal universal untuk waktu dalam sistem operasi, basis data, dan bahasa pemrograman.

Bagaimana cara mengetahui apakah timestamp dalam detik atau milidetik?

Hitung jumlah digitnya. Pada tahun 2024, timestamp Unix dalam detik terdiri dari 10 digit (misalnya, 1700000000). Timestamp dalam milidetik terdiri dari 13 digit (misalnya, 1700000000000). Jika angkanya kurang dari sekitar 10 miliar, kemungkinan besar itu adalah detik. Timestamp dengan presisi nanodetik (digunakan dalam beberapa sistem frekuensi tinggi) terdiri dari 19 digit.

Apa itu masalah Tahun 2038?

Sistem yang menyimpan timestamp Unix sebagai bilangan bulat bertanda 32-bit hanya dapat merepresentasikan nilai hingga 2.147.483.647. Maksimum tersebut sesuai dengan 19 Januari 2038 pukul 03:14:07 UTC. Menambahkan satu detik setelah itu menyebabkan overflow bilangan bulat menjadi angka negatif besar, yang merusak perhitungan tanggal. Sistem 64-bit modern aman hingga sekitar 292 miliar tahun dari sekarang.

Apakah konverter ini menggunakan zona waktu lokal saya?

Ya. Alat ini menampilkan baik waktu UTC maupun waktu lokal Anda. Waktu lokal ditentukan oleh pengaturan zona waktu di browser Anda, yang mencerminkan zona waktu yang dikonfigurasi di sistem operasi Anda. Jika jam sistem Anda salah konfigurasi atau Anda sedang bepergian, tampilan waktu lokal mencerminkan pengaturan tersebut.

Bagaimana cara mendapatkan timestamp Unix saat ini dalam kode?

JavaScript: Math.floor(Date.now() / 1000) untuk detik, atau Date.now() untuk milidetik. Python: import time; int(time.time()). Go: time.Now().Unix() untuk detik, time.Now().UnixMilli() untuk milidetik. PostgreSQL: EXTRACT(EPOCH FROM NOW()). Bash: date +%s.