Penukar cap masa Unix kepada tarikh
Tukar cap masa Unix kepada tarikh dan masa yang boleh dibaca — atau tukar mana-mana tarikh kembali kepada cap masa Unix. Menyokong saat dan milisaat.
Kongsi alat ini
Selitkan di laman anda
Alat berkaitan
Apakah itu Unix timestamp?
Unix timestamp, juga dikenali sebagai Unix time atau POSIX time, ialah bilangan saat yang telah berlalu sejak 1970-01-01 00:00:00 UTC, dikenali sebagai Unix epoch. Ini adalah standard yang digunakan secara meluas dalam pengkomputeran kerana ia mewakili satu titik dalam masa sebagai satu integer, yang menjadikan penyimpanan, perbandingan, dan pengiraan menjadi mudah.
JavaScript berfungsi secara dalaman dalam milisaat, jadi Date.now() mengembalikan Unix timestamp didarab dengan 1000. Banyak API, pangkalan data, dan sistem backend menggunakan saat sebagai gantinya. Alat ini menerima kedua-dua format dan mengesan saat atau milisaat secara automatik berdasarkan saiz nombor yang anda masukkan.
Unix timestamps yang ketara
| Timestamp | Tarikh (UTC) | Catatan |
|---|---|---|
0 | 1970-01-01 00:00:00 | Unix epoch |
1,000,000,000 | 2001-09-09 01:46:40 | 1 bilion saat |
2,000,000,000 | 2033-05-18 03:33:20 | 2 bilion saat |
2,147,483,647 | 2038-01-19 03:14:07 | Masalah Tahun 2038 (max 32-bit) |
Mengapa 1970?
Unix epoch 1 Januari 1970 dipilih sebahagiannya mengikut konvensyen dan sebahagiannya oleh kekangan praktikal. Unix telah dibangunkan pada akhir 1960-an dan awal 1970-an di Bell Labs. Para pembangun memerlukan tarikh permulaan yang terkini dan bulat untuk perwakilan masa mereka. 1 Januari 1970 sudah cukup terkini untuk digunakan secara praktikal dan tidak mempunyai kepentingan teknikal khusus — ia hanyalah satu titik jangkar yang mudah.
Tarikh epoch alternatif wujud dalam sistem lain: epoch Windows FILETIME ialah 1 Januari 1601; masa GPS bermula 6 Januari 1980; epoch NTP ialah 1 Januari 1900. Apabila menukar antara sistem, mengetahui epoch setiap sistem adalah penting.
Saat berbanding milisaat
Unix timestamp asal adalah dalam saat. Kebanyakan bahasa dan sistem sebelah pelayan (Unix shell, time.time() Python, time() PHP, kebanyakan pangkalan data) menggunakan saat. Date.now() JavaScript dan new Date().getTime() mengembalikan milisaat. Ketidakpadanan ini adalah sumber ralat yang biasa apabila frontend JavaScript berkomunikasi dengan API backend.
Unix timestamp dalam saat pada masa ini ialah nombor 10-digit (kira-kira 1,700,000,000 pada 2023). Timestamp milisaat ialah nombor 13-digit. Kalkulator mengesan format yang anda masukkan berdasarkan bilangan digit dan menukar sewajarnya.
Masalah Tahun 2038
Sistem yang menyimpan Unix timestamp sebagai integer 32-bit yang ditandatangani hanya boleh mewakili tarikh sehingga 2,147,483,647 saat selepas epoch — iaitu 03:14:07 UTC pada 19 Januari 2038. Selepas saat itu, integer 32-bit yang ditandatangani akan melimpah menjadi nombor negatif yang besar, mewakili satu tarikh pada 1901.
Ini kadangkala dipanggil masalah "Y2K38" atau Unix Millennium Bug. Sistem 64-bit moden tidak terjejas, kerana integer 64-bit yang ditandatangani boleh mewakili timestamp selama kira-kira 292 bilion tahun. Walau bagaimanapun, sistem tertanam, pangkalan data warisan, dan perisian 32-bit yang lebih lama mungkin masih terdedah. Banyak industri — termasuk telekomunikasi, perbankan, dan sistem kawalan industri — mempunyai usaha penghijrahan yang berterusan untuk menangani perkara ini.
Cara mendapatkan Unix timestamp semasa
| Bahasa / persekitaran | Perintah |
|---|---|
| JavaScript | Math.floor(Date.now() / 1000) |
| Python | import time; int(time.time()) |
| PHP | time() |
| Bash | date +%s |
| SQL (PostgreSQL) | EXTRACT(EPOCH FROM NOW())::int |
| SQL (MySQL) | UNIX_TIMESTAMP() |
| Go | time.Now().Unix() |
| Rust | SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs() |
Kegunaan praktikal
Pembangunan API: REST API biasanya menggunakan Unix timestamp untuk medan created_at, updated_at, dan tamat tempoh token. Timestamp adalah agnostik zon masa dan tidak jelas — tidak seperti rentetan tarikh berformat, yang bergantung pada konvensyen lokalisasi dan pemformatan.
Tamat tempoh token: JWT (JSON Web Tokens) menggunakan Unix timestamp untuk tuntutan exp (expiry) dan iat (issued at). Token tamat apabila timestamp semasa melebihi nilai exp. Pengiraan masa tamat tempoh — "token ini harus tamat dalam 24 jam" — memerlukan penambahan 86,400 saat ke timestamp semasa.
Cache TTL: Tamat tempoh cache sering ditetapkan sebagai Unix timestamp atau sebagai bilangan saat dari sekarang. Penyahpepijatan isu cache sering memerlukan penukaran timestamp tamat tempoh yang disimpan ke tarikh yang boleh dibaca manusia.
Analisis log: Log pelayan sering mengandungi Unix timestamp. Menukarnya ke tarikh yang boleh dibaca adalah langkah pertama dalam mengaitkan entri log dengan peristiwa dunia nyata.
Penyimpanan pangkalan data: Menyimpan timestamp sebagai integer dan bukannya rentetan berformat mengelakkan pepijatan penukaran zon masa dan memudahkan pengisihan, pertanyaan julat, dan pengiraan. Pertanyaan untuk "semua rekod dari 7 hari terakhir" menjadi WHERE created_at > (NOW_UNIX - 604800).
Artikel berkaitan
Masa Epoch dalam API dan Log: Cara Membaca dan Menukarnya dengan BetulMasa epoch muncul di merata tempat dalam API, pangkalan data, dan log, tetapi mudah tersalah baca. Panduan ini menerangkan maksud masa epoch, mengapa sistem menggunakannya, dan cara menukarnya tanpa kesilapan biasa.
Apakah Itu Unix Timestamp (Dan Mengapa Pembangun Menggunakannya)?Unix timestamp ialah satu integer yang mewakili sebarang detik masa — tiada zon waktu, tiada format, hanya nombor. Ini cara ia berfungsi dan bila sesuai digunakan.