Bahasa Melayu

Alat pembangun · Penukar cap masa Unix

Saat atau milisaat? Memberitahu zaman 10-digit daripada zaman 13-digit

· Bagaimana ia berfungsi

cap masa masa unix aliran kerja pembangun

Nilai sepuluh digit saat dan nilai milisaat tiga belas digit menunjuk kepada satu saat
Ilustrasi vektor ToolAcre asal

Kebanyakan nilai zaman yang anda temui hari ini ialah sama ada sepuluh digit (saat) atau tiga belas digit (milisaat), dan salah meneka meletakkan tarikh berpuluh-puluh ribu tahun berlalu. Siaran ini menerangkan aritmetik di sebalik kiraan digit dan sebab penukar harus menyatakan unit dan bukannya membuat kesimpulan.

1700000000 atau 1700000000000? — segera yang sama ditulis dua cara, dan papan pemuka yang menunjukkan tarikh pada masa hadapan yang jauh

Nilai log 1700000000 dan nilai muatan 1700000000000 boleh menggambarkan segera yang sama. Anggap yang pertama sebagai milisaat dan papan pemuka anda jatuh ke bulan Januari 1970; anggap detik sebagai detik dan tarikhnya melonjak ribuan tahun ke hadapan. Cap masa hanyalah kiraan ditambah unit dan titik permulaan, jadi lajur pangkalan data bernama created_at tanpa dokumentasi telah meninggalkan maklumat penting.

Mengapa kiraan kedua semasa mempunyai sepuluh digit — saat ke-bilion dalam 2001, julat sepuluh digit berjalan ke 2286 dan apakah maksud sembilan digit

Kiraan masa Unix berlalu saat dari 1970-01-01 00:00:00 UTC di bawah konvensyen POSIX biasa. Kaunter melepasi satu bilion dalam 2001; untuk tarikh positif kontemporari lazimnya ialah sepuluh digit perpuluhan. Ia kekal sepuluh digit sehingga mencapai sepuluh bilion dalam 2286. Ini ialah sifat tatatanda asas sepuluh, bukan peraturan yang dimasukkan ke dalam rentetan tarikh ISO. Nilai negatif sebelum zaman dan tarikh jauh di luar masa kini membatalkan pintasan kiraan digit mudah.

Mengapa kiraan milisaat mempunyai tiga belas — faktor seribu, tiga digit tambahan, dan dari mana asal JavaScript dan konvensyen Java

JavaScript Date.getTime() secara konvensional mengira milisaat, mendarabkan cap masa saat dengan 1,000. Tiga sifar menjadikan kiraan sepuluh digit saat semasa menjadi kiraan milisaat tiga belas digit. Contohnya 1,700,000,000 saat menjadi 1,700,000,000,000 milisaat; kedua-duanya adalah 2023-11-14T22:13:20.000Z. Penukar yang sahaja memasukkan pemisah tanpa menyatakan unit yang diandaikan boleh menukar nombor yang sah menjadi tarikh yang munasabah tetapi salah.

Di mana tekaan silap — nilai kecil berhampiran zaman, tarikh sebelum 2001 dan tarikh akan datang di mana kiraan digit berhenti mendiskriminasi

Heuristik gagal berhampiran 1970 apabila nilai milisaat mungkin pendek, sebelum 2001 apabila saat mempunyai kurang daripada sepuluh digit, atau dengan pembilang mikrosaat dan nanosaat. ToolAcre lalai untuk mentafsir magnitud di bawah 10¹¹ sebagai saat dan nilai yang lebih besar sebagai milisaat dan melabelkan unit yang digunakan. Ambang itu adalah tekaan praktikal, bukan penyahkod format yang tidak jelas. Cap masa yang dibekalkan oleh API tertentu hendaklah ditafsirkan menggunakan dokumentasi API itu walaupun panjangnya luar biasa.

Contoh berfungsi: tiga nilai daripada satu log — 1700000000, 1700000000000 dan 1700000000000000, dibaca dalam saat, milisaat dan mikrosaat

Tiga integer daripada log ilustrasi menunjukkan perangkap. Tafsirkan 1700000000 sebagai saat dan 1700000000000 sebagai milisaat: kedua-duanya memutuskan kepada 2023-11-14T22:13:20Z. Tafsirkan 1700000000000000 sebagai mikrosaat dan bahagikan dengan satu juta untuk mendapatkan kiraan kedua yang sama. Penukar ToolAcre menerima saat atau milisaat, bukan mod mikrosaat: menampal nombor ketiga itu tanpa menukar unitnya terlebih dahulu tidak akan mengesahkan segera yang dimaksudkan. Sentiasa pastikan medan mentah dan unitnya bersama semasa menyahpepijat.

Mengapa unit harus dinyatakan, bukan diteka — bagaimana penukar menunjukkan unit yang digunakan supaya andaian yang salah kelihatan dan bukannya senyap

Setem masa penghantaran perkhidmatan harus menamakan unit dalam skemanya atau menggunakan teks ISO 8601 dengan offset eksplisit. Jika medan warisan tidak didokumentasikan, bandingkan beberapa nilai dengan masa acara lain yang boleh dipercayai sebelum membuat keputusan; satu tarikh yang munasabah secara kebetulan adalah bukti yang tidak mencukupi. Penukar memaparkan unit yang digunakan, memberi anda peluang untuk menangkap kesilapan faktor-1,000. Tukar unit secara eksplisit dan bandingkan daripada bergantung pada tekaan automatik sebagai kontrak API jangka panjang.

Perkara ini tidak meliputi — cap masa disimpan sebagai rentetan, ISO 8601 teks atau tarikh bersiri hamparan, yang merupakan masalah berbeza

Artikel ini tidak menerangkan tarikh bersiri Excel, rentetan seperti 2026-09-28T10:15Z, atau pemformatan zon waktu bacaan jam tempatan. Itu adalah perwakilan yang berbeza. Cap masa Unix merujuk kepada sekelip mata; sesaat yang sama muncul sebagai masa jam dinding yang berbeza di zon yang berbeza. Konvensyen lompat-saat juga berhak mendapat rawatan yang berasingan, dan kaunter bertanda 32-bit mempunyai masalah limpahan dalam 2038 yang berbeza daripada soalan saat lawan-milisaat.

Bawa pulang: kira digit, kemudian sahkan unit — dan cara penukar cap waktu Unix membaca kedua-dua saat dan milisaat dengan unit berlabel

Kira digit sebagai petunjuk awal, kemudian sahkan unit yang dinyatakan pengeluar dan sekurang-kurangnya satu peristiwa yang diketahui. Penukar cap waktu Unix menjadikan andaian saat yang digunakan/milliseconds kelihatan dan mencetak kedua-dua UTC dan perwakilan setempat dalam pelayar anda. Jangan biarkan tarikh yang kelihatan kemas mengatasi dokumentasi bertentangan daripada sistem yang menghasilkan nilai.