Bahasa Melayu

Alat pembangun · Penukar cap masa Unix

Saat lompat dan masa Unix: mengapa zaman berpura-pura ia tidak wujud

· Latar belakang

cap masa masa unix zon waktu

Garis masa melangkah terus dari 23:59:59 ke tengah malam
Ilustrasi vektor ToolAcre asal

UTC telah memasukkan saat lompat sejak 1972, tetapi masa Unix tidak mengiranya, yang bermaksud beberapa saat telah berlaku dua kali. Siaran ini menerangkan sebabnya, apa itu memburuk-burukkan, dan sebab keseluruhan amalan itu dijadualkan ditamatkan.

Yang kedua berlaku dua kali — 23:59:60 dalam satu sistem, 23:59:59 berulang dalam sistem lain dan ralat kunci pendua pada tengah malam

ToolAcre tidak boleh menghasilkan baris ISO yang berakhir dengan `23:59:60`. Ujiannya menamakan sempadan lompat detik dan menjangkakan satu nilai zaman akan diformatkan sebagai `2016-12-31T23:59:59.000Z` dan seterusnya sebagai `2017-01-01T00:00:00.000Z`. Tiada detik tambahan yang boleh dipaparkan di antara mereka.

Fakta itu boleh menjejaskan log yang sumber luarannya menggunakan konvensyen lain, tetapi repositori ini tidak mengandungi bukti kejadian kunci pendua. Jika label berulang muncul dalam sistem, periksa jam dan laluan storan itu daripada mengaitkannya secara automatik kepada penukar.

Oleh itu, sistem yang memerlukan label unik untuk setiap saat fizikal memerlukan lebih banyak konteks daripada pemetaan Unix-to-Date ini. Penukar tidak boleh mengeluarkan label yang ditinggalkan modelnya.

ToolAcre membuktikan tiada 23:59:60 yang boleh diwakili; ia tidak mendokumenkan insiden kunci pendua

Garis besar menerangkan masa atom, putaran Bumi dan ambang toleransi. Tuntutan saintifik dan piawaian tersebut tidak ditetapkan oleh kod cap masa atau ujian. Mereka sengaja ditinggalkan daripada diparafrasakan daripada ingatan. Mekanisme di sini tidak membuktikan sebab di sebalik dasar ketepatan masa global.

Untuk menggunakan laluan ini, bukti yang diperlukan adalah lebih mudah: Tarikh dan ISO keluaran mendedahkan label kedua biasa, dan zaman gaya POSIX merentasi sempadan yang diuji. Rawatan bersumberkan tadbir urus detik-detik akan memerlukan bahan berwibawa di luar laluan repositori yang dibenarkan.

Sempadan ini adalah eksplisit dan bukannya mengelak: ujian perisian menjawab soalan perwakilan, manakala sejarah saintifik memerlukan bahan yang ditulis untuk tujuan itu dan disemak mengikut syaratnya sendiri.

Rasional fizikal untuk saat lompat memerlukan sumber di luar repositori ini

Model yang dilaksanakan berkelakuan seolah-olah hari sivil pada paksinya mempunyai 86,400 saat Unix bernombor. Input integer berturut-turut berbeza dengan satu saat, termasuk merentasi sempadan 2016 tahun. `fromEpoch` darab setiap satu dengan 1,000 dan Tarikh memformat kiraan milisaat yang terhasil.

Memanggil detik lompat "mengabaikan" ini menerangkan output yang boleh diperhatikan: tiada nilai Unix unik dipetakan ke label `:60`. Ia tidak membayangkan setiap jam mesin maju secara sama semasa sisipan sebenar. Penukar menerima kiraan; ia tidak mengambil sampel atau mendisiplinkan jam hos.

Aritmetik merentas julat yang lebih besar mengikut konvensyen yang sama, jadi penolakan dua nilai Unix mengukur perbezaan kiraan gaya POSIX dan bukannya membina semula label lompatan yang ditinggalkan.

Penukaran yang diuji tidak mempunyai label detik lompat antara nilai zaman berturut-turut

Sistem boleh menggunakan langkah, ulangan atau calitan, tetapi repositori tidak mengenal pasti penyedia mana yang menggunakan kaedah mana, pada selang masa atau dengan formula apa. Menerbitkan butiran tersebut tanpa bukti langsung akan mewujudkan ketepatan operasi berbahaya. Oleh itu, artikel ini tidak membuat janji jam khusus platform.

Jika peristiwa berhampiran perkara sempadan lompatan, kekalkan dokumentasi jam sumber dan nilai mentah. Dua sistem dengan pengendalian berbeza boleh tidak bersetuju walaupun selepas kedua-dua nilai diformatkan sebagai UTC. Penukaran sahaja tidak boleh menyelaraskan gelagat pensampelan mereka atau memulihkan perbezaan skala yang ditinggalkan.

Pilihan masa jalanan juga boleh menjejaskan pesanan jangka pendek di sekitar acara. Kekalkan pembilang monotonik atau data jujukan khusus sumber apabila perbezaan itu penting secara operasi.

Tingkah laku jam dan smear adalah khusus platform dan tidak disahkan di sini

Masukkan 1,483,228,799 saat: keputusan ISO yang disahkan ialah `2016-12-31T23:59:59.000Z`. Naikkan input sekali kepada 1,483,228,800: hasilnya ialah `2017-01-01T00:00:00.000Z`. Menolak integer memberikan satu, memadankan janjang yang dipaparkan dalam model ini.

Baris setempat mungkin menunjukkan tarikh atau offset yang berbeza bergantung pada pelayar, tetapi ia berasal daripada detik yang sama. Gunakan baris ISO untuk semakan sempadan. Perubahan zon tempatan tidak berkaitan dengan sama ada label lompat detik wujud.

Pasangan itu ialah ujian regresi yang berguna kerana tiada pergantungan setempat dalam rentetan ISO. Ia secara langsung mengunci tingkah laku penukar di tepi yang berkaitan.

Contoh yang berfungsi: sempadan 2016 repositori yang diuji

Buku kerja merujuk resolusi 2022 dan tarikh akhir masa hadapan. Tiada piawaian atau sumber dasar adalah sebahagian daripada bukti pelaksanaan, jadi tarikh mahupun ramalan tidak dinyatakan di sini. Dasar ketepatan masa boleh berubah dan berhak mendapat petikan berwibawa semasa pada masa penerbitan.

Meninggalkan tuntutan itu tidak melemahkan panduan perisian. Data sedia ada masih memerlukan skala, unit dan sumber jamnya didokumenkan. Tingkah laku semasa penukar kekal boleh diuji secara bebas daripada keputusan tentang amalan masa sivil masa hadapan.

Penyelenggara boleh menambah konteks dasar kemudian dengan memetik resolusi secara langsung. Sehingga itu, mengecualikan tarikh akhir adalah lebih tepat daripada menerbitkan jaminan masa depan yang tidak disokong.

Resolusi dasar masa depan ditinggalkan tanpa sumber yang berwibawa

TAI, GPS dan skala lain boleh mewakili masa secara berbeza, tetapi ToolAcre tidak menawarkan jadual pemilih atau mengimbangi untuk mereka. Menampal kiraan seperti saat Unix sahaja menggunakan tafsiran gaya 1970 POSIX. Hasil yang boleh dibaca masih boleh salah secara semantik.

Ubah skala lain dengan sumber yang mentakrifkan asal dan hubungannya pada masa yang berkaitan, kemudian periksa nilai Unix yang terhasil. Jangan tambah pemalar yang diingati: perhubungan yang melibatkan sejarah lonjakan adalah tempat aritmetik tidak bersumber menjadi rapuh.

Ketiadaan mod boleh dilihat dalam tiga pilihan unit UI. Tiada yang mengubah skala masa; automatik sahaja memilih antara dua resolusi Unix.

Skala masa lain berada di luar pelaksanaan penukar Unix ini

Untuk penukar ini, peraturan yang disahkan ialah langkah terus dari 23:59:59 kepada 00:00:00 di sempadan yang diuji. Model itu menyokong aritmetik zaman biasa dan menerangkan sebab tiada keluaran `:60` muncul. Ia tidak memperakui cara jam sistem pengendalian berkelakuan semasa sempadan sebenar berlalu.

Apabila ketepatan pengendalian hampir lompat penting, penukaran ialah langkah pembentangan terakhir, bukan sumber bukti. Kumpulkan dokumentasi skala jam, gelagat penyegerakan dan medan acara mentah terlebih dahulu. ToolAcre kemudiannya boleh menunjukkan maksud kiraan Unix yang diisytiharkan di bawah modelnya yang diuji.

Untuk log biasa yang jauh dari sempadan lompatan, nuansa ini jarang menukar paparan. Walau bagaimanapun, menghampiri sempadan sensitif, menamakan model menghalang dakwaan palsu tentang kesetiaan fizikal-kedua.