Menukar cap waktu Unix kepada tarikh dan sebaliknya
Diterbitkan pada · Dikemas kini pada 2 minit bacaan
Cap waktu Unix mengira masa yang berlalu sejak 1 Januari 1970 tengah malam mengikut waktu universal. Dua soalan menentukan tarikh hasilnya: unit nombor itu, dan zon waktu tempat anda membaca hasilnya.
Satu nilai rujukan
Tukar cap waktu Unix memberikan tiga bacaan bagi detik yang sama. Untuk 1700000000, dengan pelayar ditetapkan kepada waktu Paris:
| Bacaan | Hasil |
|---|---|
| Tarikh UTC | Tue, 14 Nov 2023 22:13:20 GMT |
| Tarikh tempatan | 14 November 2023 pada 23:13:20 UTC+1 |
| ISO | 2023-11-14T22:13:20.000Z |
Waktu tempatan mengikut zon waktu pelayar: lebih sejam di Paris pada musim sejuk. Cap waktu yang sama ialah satu detik tunggal, yang dibaca dalam dua zon waktu.
Unit dikenali daripada bilangan digit
Tetapan lalai mengenali unit daripada panjang nombor. Ketiga-tiga nilai di bawah menunjuk kepada detik yang sama, mengikut kejituannya.
| Nombor | Digit | Unit yang dikenali | Detik yang diperoleh |
|---|---|---|---|
| 1700000000 | 10 | Saat | 14 Nov 2023, 22:13:20 UTC |
| 1700000000000 | 13 | Milisaat | 14 Nov 2023, 22:13:20 UTC |
| 1700000000123456 | 16 | Mikrosaat | 14 Nov 2023, 22:13:20.123 UTC |
Peraturannya: sehingga 11 digit, saat; dari 12 hingga 14, milisaat; 15 dan 16, mikrosaat. Tetapan “milisaat” memaksa unit itu.
Perangkap peraturan ini
Oleh sebab unit disimpulkan daripada panjang, nilai yang kabur dibaca dengan satu cara sahaja: 10000000000 (11 digit) menghasilkan 20 November 2286, dan 100000000000 (12 digit) menghasilkan 3 Mac 1973. Cap waktu milisaat sebelum Mac 1973 mempunyai 11 digit atau kurang, dan akan dibaca sebagai saat: paksa tetapan “milisaat”.
Nilai sebelum 1970 dan had 2038
Nombor negatif menunjuk kepada detik sebelum 1970: -1 menghasilkan 31 Disember 1969 pada 23:59:59 UTC, dan 0 menghasilkan 1 Januari 1970 tengah malam.
Nombor 2147483647 ialah yang terbesar yang dapat dimuatkan oleh integer bertanda 32 bit: ia menghasilkan 19 Januari 2038 pada 03:14:07 UTC. Nombor seterusnya, 2147483648, menghasilkan 03:14:08: alat ini diteruskan tanpa had, tetapi sistem yang menyimpan waktu dalam 32 bit tidak boleh.
Menukar tarikh kepada cap waktu
Masukkan tarikh sebagai ganti nombor: alat ini memberikan cap waktu dalam saat dan milisaat.
| Masukan | Cap waktu dalam saat | Bacaan |
|---|---|---|
| 2026-01-01 | 1767225600 | Tengah malam mengikut waktu universal, tiada zon waktu diberikan |
| 2026-01-01T10:30:00+01:00 | 1767259800 | 10:30 di Paris, iaitu 09:30 mengikut waktu universal |
| 2024-02-29 | 1709164800 | Tahun lompat diterima |
Tarikh tanpa zon waktu dibaca dalam waktu universal, bukan waktu tempatan: alat ini menyatakannya dalam hasil. Tarikh yang tidak wujud, seperti 30 Februari 2026, ditolak dengan mesej.
Kesilapan lazim
- Membaca milisaat sebagai saat: tarikh mendarat beribu tahun terlalu jauh.
- Terlupa zon waktu: tarikh yang dibaca sebagai tempatan lalu dihantar sebagai universal beralih sejam atau lebih.
- Menulis tarikh tanpa zon waktu sambil memikirkan waktu tempatan, sedangkan ia akan dibaca dalam UTC.
Untuk mengira hari antara dua tarikh, lihat Mengira bilangan hari antara dua tarikh.
Semak sesuatu penukaran
- Baca semula baris UTC, yang tidak bergantung pada peranti.
- Semak unit yang dinyatakan pada baris pertama hasil.
- Tukar semula tarikh yang diperoleh: anda harus mendapat nombor asal.
