Bahasa Melayu

Alat pembangun · Penukar cap masa Unix

Epok mikrosaat dan nanosaat: memendekkan 16 dan 19 nilai digit

· Bagaimana ia berfungsi

cap masa masa unix aliran kerja pembangun

Nilai nanosaat panjang menyempit melalui mikrosaat kepada milisaat
Ilustrasi vektor ToolAcre asal

Sesetengah masa jalan mengeluarkan epok dalam mikrosaat atau nanosaat, memberikan nilai enam belas atau sembilan belas digit yang penukar saat atau milisaat tidak boleh dibaca secara langsung. Siaran ini menerangkan dari mana asalnya dan cara memendekkannya dengan selamat.

Nombor sembilan belas digit dalam surih — time.UnixNano output ditampal ke dalam penukar dan hasilnya tidak masuk akal

Medan jejak sembilan belas digit boleh menjadi zaman nanosaat, tetapi menampalnya terus ke dalam penukar ini tidak menguji hipotesis itu. ToolAcre menerima saat atau milisaat. Ralat julatnya malah membayangkan bahawa nombor pangkalan data yang terlalu besar mungkin menggunakan mikrosaat atau nanosaat, mengarahkan pengguna untuk menormalkan sebelum mentafsir.

Kekalkan teks asal semasa menyiasat. Menukarkannya kepada Nombor JavaScript biasa sudah boleh mengubah digit tertib rendah sebelum sebarang pembahagian berlaku. Skema pengeluar, pernyataan pengelogan atau definisi lajur pangkalan data adalah bukti yang lebih baik daripada panjang visual, terutamanya untuk pembilang yang bukan zaman Unix sama sekali.

Empat resolusi biasa — saat, milisaat, mikrosaat dan nanosaat, dengan kiraan digitnya untuk tarikh masa kini

Saat maju sekali sesaat, milisaat seribu kali lebih pantas, mikrosaat sejuta kali dan nanosaat satu bilion kali. Sekitar tarikh sekarang ini selalunya muncul sebagai sepuluh, tiga belas, enam belas dan sembilan belas digit perpuluhan. "Selalunya" penting: tanda negatif, tarikh awal dan julat jauh melanggar peraturan digit sahaja.

Ambang automatik panel membezakan sahaja beberapa saat daripada milisaat pada magnitud 10¹¹. Nilai mikrosaat enam belas digit melebihi sempadan itu dan akan dianggap sebagai milisaat, secara amnya melebihi tarikh yang dimaksudkan dengan faktor seribu. Pilih unit sahaja selepas mengurangkan resolusi yang tidak disokong kepada satu nama laluan.

Empat label resolusi adalah perkara biasa, tetapi kiraan digit sahaja bukanlah kontrak format

Garis besar itu menamakan beberapa API bahasa dan produk storan, tetapi tiada satu pun fail sumber untuk alat ini. Daripada menganggap pengeluar mana yang mengeluarkan medan, periksa dokumentasinya. Akhiran seperti `_us` atau `_ns`, ketepatan yang diisytiharkan atau peristiwa bersebelahan yang diketahui membekalkan bukti bahawa lebar perpuluhan tidak boleh.

Juga membezakan zaman daripada tempoh monoton. Kaunter resolusi tinggi mungkin mengukur masa sejak proses bermula atau tetapi dan tidak mempunyai kaitan dengan 1970. Membahagikan nilai sedemikian menghasilkan pembilang yang lebih kecil, bukan tarikh kalendar. Sahkan kedua-dua unit dan asal sebelum membawa hasil ke penukar zaman.

Kenal pasti resolusi daripada pengeluar, bukan senarai pemancar yang dianggap

Untuk mengurangkan mikrosaat kepada milisaat, alih keluar faktor 1,000; untuk nanosaat, keluarkan 1,000,000. Pembahagian integer sengaja mengetepikan ketepatan sub-milisaat. Untuk nilai positif, pemangkasan mengambil kiraan milisaat terkemuka. Untuk negatif, pilih peraturan pembundaran yang sepadan dengan pengeluar dan bukannya mengandaikan penghirisan rentetan mempunyai semantik yang sama.

Lakukan operasi dengan teks perpuluhan atau BigInt apabila ketepatan penting. Pembahagian titik terapung boleh bermula daripada Nombor sembilan belas digit yang telah dibundarkan. Kekalkan baki yang dibuang di sebelah segera yang ditukar jika penyiasatan memerlukan susunan peristiwa dalam masa satu milisaat; ToolAcre tidak boleh memaparkan perbezaan sub-milisaat tersebut.

Contoh yang berkesan: 1700000000123456789 — memangkas kepada milisaat, membaca hasilnya dan mencatat digit sub-milisaat yang anda ketepikan

Ambil `1738577696123456789` sebagai nanosaat. Anggap ia sebagai teks perpuluhan, bahagikan dengan 1,000,000 dengan aritmetik integer dan dapatkan 1,738,577,696,123 milisaat dengan baki 456,789 nanosaat. Masukkan hasil bagi milisaat secara eksplisit; bacaan ISO ialah `2025-02-03T10:14:56.123Z`.

Selebihnya bukan hingar: dua peristiwa surih boleh berkongsi milisaat yang dipaparkan sambil berbeza di bawahnya. Simpan nilai mentah untuk pesanan dan gunakan output yang dikurangkan sahaja untuk orientasi manusia. Membundarkan kepada 1,738,577,696,124 akan mengalihkan segera yang dipaparkan ke dalam milisaat seterusnya dan salah nyatakan sumber.

Pembahagian rentetan boleh disemak digit demi digit: enam tempat perpuluhan yang dialih keluar sepadan tepat dengan skala nanosaat hingga milisaat, manakala awalan yang tidak disentuh kekal sebagai kiraan galas kalendar.

Contoh yang berjaya: kekalkan nilai 19-digit sebagai teks sambil mengurangkannya kepada milisaat

Jaminan integer tepat JavaScript berakhir jauh di bawah nilai zaman sembilan belas digit biasa. Penghurai ToolAcre akhirnya memanggil `Number`, jadi pemberian teks nanosaat mentah melalui panel tidak boleh mengekalkan setiap digit. Had Tarikh yang disokong dan pemilih unit tidak menjadikan Nombor menjadi bekas integer nanosaat.

Gunakan BigInt atau laluan prapemprosesan sedar rentetan untuk pengurangan, kemudian lulus hasil milisaat bersaiz selamat. Penjujukan ini penting: menghuraikan dahulu dan membahagikan kedua boleh merosakkan dengan tepat digit yang anda harap kekalkan. Penyampaian kalendar yang berjaya tidak membuktikan nilai sumber tertib rendah kekal.

Perkara ini tidak meliputi — ketepatan jam, yang tidak berkaitan dengan peleraian: cap masa nanosaat masih boleh salah dalam beberapa saat

Resolusi memberitahu anda betapa halusnya suatu perwakilan boleh membezakan nilai; ia tidak memberitahu anda betapa hampirnya jam itu dengan masa fizikal. Medan nanosaat boleh diperoleh daripada sumber yang tidak tepat, manakala medan saat boleh disegerakkan dengan baik. Penukar tidak mempunyai ukuran kualiti jam dan tidak membuat tuntutan sedemikian.

Begitu juga, digit tambahan boleh berlapik ketepatan dan bukannya ketepatan diukur. Untuk analisis insiden, bandingkan jam menggunakan bukti penyegerakan dan bandingkan susunan acara menggunakan kaunter yang didokumenkan mentah. Penukaran kalendar membekalkan kebolehbacaan sahaja. Jangan membuat kesimpulan ketepatan daripada ekor perpuluhan yang panjang atau daripada tiga milisaat yang ditunjukkan dalam ISO.

Bawa pulang: kurangkan kepada milisaat dahulu, kemudian tukar — dan cara penukar cap masa Unix membaca nilai yang dipendekkan dengan unit yang dinyatakan

Kurangkan peleraian yang tidak disokong sebelum penukaran, simpan yang asal dan nyatakan baki yang dibuang. ToolAcre kemudiannya boleh melakukan apa yang dijanjikan oleh kontraknya: baca saat atau milisaat yang terhasil dan tunjukkan borang UTC, setempat dan ISO dengan unit yang dipilih boleh dilihat.

Jika tarikh yang dinormalkan masih tidak masuk akal, lawati semula asal dan bukannya memadamkan digit berulang kali. Kaunter sejak tetapi, zaman lain atau pengekodan tidak berdokumen semuanya boleh kekal salah pada setiap skala. Unit, asalan dan ketepatan integer ialah soalan yang berasingan; jawab ketiga-tiganya sebelum mempercayai tarikh yang boleh dibaca manusia.

Pemilih unit eksplisit adalah penting selepas pengurangan kerana pengesanan automatik hanyalah lalai. Memilih milisaat merekodkan keputusan prapemprosesan dan bukannya meminta magnitud heuristik untuk menemuinya semula.