Alat pengembang · Konverter stempel waktu Unix
Tidak setiap zaman adalah 1970: NTP, Windows FILETIME, GPS dan tanggal Excel
· Latar belakang
stempel waktu format data melakukan debug
Asal 1970 Unix hanyalah satu dari sekian banyak. Posting ini mensurvei zaman yang akan Anda temui dalam file dan protokol (1900, 1601, 1904, 1980, 2001) dan menunjukkan cara mengenali nilai yang tidak pernah sama sekali merupakan waktu Unix.
Stempel waktu yang muncul di 1900 — nilai dari tangkapan jaringan yang tidak masuk akal jika dipilih oleh unit apa pun
Angka dari pengambilan paket dapat menghasilkan hasil yang tidak masuk akal baik dalam hitungan detik maupun milidetik karena satuan tersebut bukanlah satu-satunya parameter tersembunyi. Epoch berarti titik nol yang dipilih; Unix menggunakan 1970, sementara protokol lain mungkin dihitung dari tempat lain. Penskalaan ulang tidak dapat memperbaiki asal yang salah.
Jika kedua pembacaan ToolAcre bertentangan dengan waktu kejadian yang diketahui, berhentilah beralih. Identifikasi nama bidang, produser, versi protokol, dan asal yang didokumentasikan. Pemangkasan angka berulang kali hingga tahun yang masuk akal muncul mengubah penyelidikan menjadi kebetulan.
Diagnostik yang sama berlaku ketika tanggal yang masuk akal muncul tetapi bertentangan dengan peristiwa di sekitarnya. Masuk akal adalah pemeriksaan yang lemah; asal dan peristiwa referensi yang diketahui lebih kuat.
NTP dan 1900 — detik sejak 1900-01-01 dengan pecahan 32-bit, dan rollover 2036 yang dihasilkannya
Buku kerja ini menyediakan asal NTP, tata letak pecahan, dan tanggal rollover. Tidak ada yang diimplementasikan atau diuji di konverter Unix, jadi artikel ini tidak menyatakan secara spesifik. Penangkapan jaringan harus didekodekan sesuai dengan dokumentasi protokol yang digunakan oleh pengirim dan pengurai.
Hanya setelah mendapatkan detik Unix barulah nilainya masuk ke alat ini. Pertahankan konteks era atau rollover karena satu bidang dengan lebar tetap mungkin tidak dapat mengidentifikasinya sendiri. Hasil UTC yang dipoles dari era yang diasumsikan bisa saja konsisten secara internal dan salah secara eksternal.
Bidang protokol juga dapat memisahkan komponen utuh dan pecahan. Menggabungkan atau mendesimalisasikannya tanpa skala yang ditentukan akan menghasilkan angka baru yang tidak dimaksudkan oleh dekoder yang sesuai.
NTP detail konversi dan perilaku rollover memerlukan dokumentasi sumber yang tidak ada di sini
Demikian pula, penghitung bernama Windows dan .NET bukanlah mode yang diterima. Repositori tidak berisi konstanta untuk asal atau skala centangnya. Nilai desimalnya yang besar mungkin melebihi rentang bilangan bulat persis JavaScript sebelum pengembang mencoba melakukan konversi.
Gunakan pustaka yang aman untuk bilangan bulat yang didasarkan pada definisi platform yang terdokumentasi, pertahankan yang asli sebagai teks atau bilangan bulat lebar, lalu keluarkan nilai Unix. Jangan kurangi offset yang diingat dalam floating point. Ketepatan pada tingkat rendah penting ketika resolusi sumber lebih baik dari milidetik.
Tes bolak-balik harus menyertakan nilai dengan digit sub-detik bukan nol. Perlengkapan satu detik penuh tidak dapat menunjukkan apakah sisa 100-nanodetik atau milidetik dipertahankan dengan benar.
Definisi FILETIME dan .NET tidak diterapkan oleh ToolAcre dan tidak dinyatakan dari memori
Tanggal spreadsheet memperkenalkan representasi berbeda: serial numerik yang diinterpretasikan oleh pengaturan sistem tanggal buku kerja. Kekhasan 1900 buku kerja dan klaim Mac yang lebih lama memerlukan sumber spreadsheet dan tidak ditetapkan di sini. ToolAcre tidak membaca metadata buku kerja.
Periksa file dengan alat yang mendukung spreadsheet, tentukan sistem tanggal yang dikonfigurasi, dan pertahankan presisi pecahan hari menggunakan pustaka tersebut. Memperlakukan serial sebagai detik Unix dapat menghasilkan tanggal 1970 awal yang tampak seperti bug skala biasa sedangkan masalah sebenarnya adalah asal dan unit bersama-sama.
Pengaturan buku kerja bisa berpindah bersama file, jadi dua serial yang serupa secara visual mungkin menggunakan asal yang berbeda. Konversi termasuk dalam batas dokumen tempat metadata tersebut tersedia.
Sistem serial dan kekhasan spreadsheet memerlukan bukti spesifik spreadsheet
GPS dan zaman terkait Apple yang disebutkan dalam garis besar juga berada di luar penerapan. Hubungan mereka mungkin melibatkan konvensi skala di luar pergeseran asal usul yang konstan. Tidak ada rumus offset atau konversi terkini yang dipublikasikan di sini tanpa bukti resmi.
Diagnostik umum masih ditransfer: identifikasi nol, durasi tick, dan konvensi lompatan dari produsen. Kemudian konversi dengan perpustakaan yang sesuai dan verifikasi terhadap stempel waktu yang diketahui dari kumpulan data yang sama. Tiga fakta independen lebih aman daripada tebakan desimal.
Kehati-hatian ini sangat penting dalam konvensi kabisat. Konstanta yang berfungsi untuk satu skala dan tanggal mungkin bukan merupakan hubungan abadi antara setiap pasangan sistem.
Hubungan GPS dan Apple epoch memerlukan sumber resmi di luar modul ini
Metode kerja yang dapat dipertahankan dimulai dengan momen yang diketahui, misalnya `2025-02-03T10:23:00.000Z` terverifikasi ToolAcre, sama dengan 1,738,578,180 detik Unix. Untuk zaman lain yang terdokumentasi, hitung nilainya menggunakan asal resmi sistem tersebut dan skalakan dengan aritmatika bilangan bulat, lalu konversikan kembali menggunakan definisi yang sama.
Bandingkan perjalanan bolak-balik ke string Unix ISO dan pertahankan derivasinya. Artikel ini sengaja tidak mengisi tabel lima zaman dengan konstanta yang tidak dibaca. Metode ini memaparkan setiap asumsi dan dapat ditinjau berdasarkan protokol atau format file mana pun yang benar-benar menghasilkan data.
Metode yang berhasil: dapatkan satu instan di seluruh zaman yang terdokumentasi daripada menerbitkan konstanta yang tidak diverifikasi
ToolAcre tidak secara otomatis mengenali atau mengonversi zaman asing. Menu unitnya menyatakan detik dan milidetik, keduanya berdasarkan definisi Unix di konfigurasi. Deteksi otomatis hanya memilih antara skala tersebut pada besaran 10¹¹; itu tidak pernah mengubah titik nol.
Kontrak sempit itu mencegah kepercayaan palsu. Jika hitungan asing mendarat pada tanggal Unix yang masuk akal, konverter tidak dapat memperingatkan bahwa asal mulanya salah. Asalnya harus masuk sebelum aritmatika. Dokumentasikan transformasi dalam kode daripada mengandalkan runbook manual.
Label otomatis yang terlihat hanya melaporkan hitungan detik atau milidetik. Hal ini tidak boleh dikutip sebagai bukti bahwa deteksi asal terjadi, karena tidak ada cabang seperti itu di sumbernya.
Kesimpulan: ketahui dari angka nol mana Anda menghitung — dan bagaimana konverter stempel waktu Unix memberi tahu Anda dengan jelas bahwa ia membaca Unix detik atau milidetik
Ketahui dari nol mana Anda menghitung, seberapa besar satu tick, dan bagaimana sumber menangani skala waktunya. Konverter Unix hanya menjawab setelah pertanyaan tersebut diselesaikan dalam hitungan detik atau milidetik sejak 1970 UTC. Itu tidak dapat menyimpulkan semantik dari satu bilangan bulat.
Gunakan pembacaan ganda yang tidak masuk akal sebagai sinyal untuk menyelidiki asal usul, bukan sebagai izin untuk terus mencoba pembagi. Setelah konversi bersumber menghasilkan nilai Unix, ToolAcre menyediakan UTC independen dan pemeriksaan kewarasan lokal yang berguna sekaligus menjaga asumsinya tetap terlihat.
Adaptor yang baik memberi nama tipe asing, melakukan satu transformasi bersumber dan mengeluarkan nilai Unix bermerek. Desain tersebut mencegah penghitung mentah bocor ke konstruktor tanggal generik.