Bahasa Indonesia

Alat pengembang · Konverter sintaksis

Mengapa TOML memiliki tipe tanggal-waktu asli dan JSON tidak (RFC 3339)

· Latar belakang

toml json stempel waktu

Empat nilai temporal TOML menyempit menjadi string JSON yang dikutip tanpa penemuan zona
Ilustrasi vektor ToolAcre asli

TOML adalah satu-satunya format di grup ini dengan tanggal dan waktu terbaik, semuanya ditentukan oleh RFC 3339. Postingan ini menjelaskan empat jenis tanggal-waktu TOML, mengapa JSON sengaja tidak memilikinya, dan apa hubungannya dengan konversi.

Tanggal yang menjadi string — konfigurasi TOML dengan tanggal rilis, diubah menjadi JSON dan direduksi menjadi teks

Tanggal lokal TOML seperti `1979-05-27` menjadi string JSON `"1979-05-27"`. Karakter kalender bertahan, namun tipe asli TOML tidak. Mengonversi kembali JSON akan menulis string yang dikutip, bukan token tanggal, dan ToolAcre memperingatkan pada konversi pertama.

Ini adalah batas yang tidak dapat dihindari dalam nilai JSON dataran yang dipilih. Menyebut perjalanan bolak-balik lossless akan membingungkan teks yang disimpan dengan tipe yang diawetkan. Peringatan tersebut menyebutkan jenis jalur dan waktu sehingga peninjau dapat memutuskan apakah suatu string dapat diterima di hilir.

Mengapa JSON tidak memiliki tipe tanggal — minimalisme Crockford, konvensi string ISO 8601, dan konvensi milidetik sejak zaman yang bersaing untuk mengisi kesenjangan

Penguraian JSON di sini menghasilkan null, boolean, angka, string, array, dan objek; itu tidak menghasilkan objek Tanggal. Repositori membuktikan fakta implementasi tersebut tetapi tidak memberikan penjelasan historis untuk minimalisme JSON atau konvensi industri yang bersaing.

Aplikasi dapat mengadopsi string atau nomor zaman yang mirip ISO berdasarkan kesepakatan, namun hal tersebut merupakan konvensi yang diterapkan pada JSON. Konverter sintaksis tidak menyimpulkan satu pun dari teks arbitrer dan tidak mengonversi nilai temporal TOML menjadi aritmatika zaman.

JSON tidak memiliki tipe tanggal asli di konverter ini; alasan asal berada di luar bukti penyimpanan

TOML menampilkan empat jenis: offset tanggal-waktu dengan Z atau offset numerik, tanggal-waktu lokal tanpa zona, tanggal lokal, dan waktu lokal. smol-toml merepresentasikannya sebagai objek mirip tanggal yang membawa metadata jenis; ToolAcre mengidentifikasi masing-masing sebelum menormalkannya.

Perbedaan tersebut mencegah kesalahan serius. Waktu lokal tidak ditetapkan secara diam-diam UTC, dan waktu tanggal lokal tidak dipindahkan antar zona. Offset yang tidak ada tetap tidak ada di string JSON.

RFC 3339 sebagai fondasi — profil ISO 8601 yang TOML pinjam, termasuk tunjangan pemisah ruang

Normalizer memanggil pemformat ISO nilai parser dan hanya menghapus pecahan `.000` sintetis. Ini mempertahankan detik pecahan yang bermakna dan bentuk lokal versus offset yang berorientasi sumber. Kode mendeskripsikan ini sebagai teks RFC 3339, tetapi artikel tersebut tidak membuat klausa spesifikasi seperti tunjangan pemisah di luar keluaran yang diuji.

Contoh offset tetap berupa teks tanggal-waktu dan tidak diubah menjadi nilai Z universal oleh lapisan ini. Hal ini menghindari perubahan representasi tertulis dan menjaga interpretasi temporal untuk aplikasi yang memilikinya.

ToolAcre mempertahankan teks temporal berorientasi sumber tanpa menyatakan detail kepatuhan RFC 3339 secara lengkap

Setiap nilai temporal menjadi string, dan peringatan menyatakan bahwa JSON, YAML, dan XML tidak memiliki tipe tanggal dalam model konversi ini. Penyeimbangan tidak sengaja dihilangkan, dan nilai-nilai lokal tidak memperolehnya. Informasi yang hilang adalah kategori tipe TOML itu sendiri.

Pada konversi terbalik, string dikutip karena penulis tidak memiliki penanda yang memerintahkannya untuk memulihkan tanggal dan waktu. Mengurai ulang string yang tampak seperti tanggal sebagai tanggal akan salah mengetikkan pengidentifikasi atau label biasa dan akan menciptakan konvensi yang tidak dimiliki oleh JSON.

Konverter mempertahankan ejaan lokal versus ejaan offset, lalu kehilangan tipe TOML asli

Gunakan `odt = 1979-05-27T07:32:00Z`, `ldt = 1979-05-27T07:32:00`, `ld = 1979-05-27` dan `lt = 07:32:00`. JSON berisi empat string dengan ejaan tersebut. Daftar peringatan mengimbangi jalur tanggal-waktu, tanggal-waktu lokal, tanggal lokal dan waktu lokal.

Ubah JSON kembali menjadi TOML. Setiap nilai dikutip. Pecahan `00.500Z` tetap berupa pecahan, sedangkan nilai satu detik penuh tidak memperoleh `.000`. Ini adalah perilaku sebenarnya yang didukung dan dengan jelas menunjukkan teks yang dipertahankan versus tipe yang hilang.

Contoh praktis: keempat jenis temporal TOML menjadi string dan dikembalikan dengan tanda kutip

Pencarian aturan zona waktu, transisi musim panas, dan konversi zaman bukan bagian dari rute ini. Tanggal-waktu lokal tanpa zona tidak dapat menjadi satu momen unik tanpa informasi lebih lanjut. Konverter stempel waktu Unix mengalamatkan instans yang diketahui berdasarkan kontrak berbeda.

Jangan masukkan setiap string yang dihasilkan ke JavaScript Tanggal dan asumsikan makna yang setara. Tanggal lokal, waktu lokal, dan waktu tanpa zona memerlukan konteks aplikasi. Pertahankan peringatan dan semantik bidang melalui migrasi.

Kesimpulan: TOML mengetahui apa itu tanggal, JSON hanya mengetahui apa itu string — dan bagaimana panel Konverter sintaksis menunjukkan perbedaan tersebut di browser Anda

TOML mengetahui empat kategori temporal; JSON hanya menerima string di sini. ToolAcre mempertahankan ejaan dengan hati-hati dan menolak membuat zona, tetapi tipe aslinya telah hilang dan tidak dapat direkonstruksi secara otomatis saat dikembalikan.

Tinjau setiap jalur yang diperingatkan dan tentukan konvensi aplikasi kapan semantik temporal harus bertahan. Jika tidak ada konvensi seperti itu, pertahankan TOML sebagai sumber resmi daripada menganggap kutipan perjalanan pulang pergi sebagai hal yang setara.

Konvensi suara juga menyebutkan string mana yang dapat diurai lagi dan dalam konteks apa. Tanggal-waktu offset dapat mengidentifikasi suatu momen, sedangkan tanggal-waktu, tanggal, atau waktu lokal tidak dapat mengidentifikasinya tanpa aturan tambahan. Simpan jenis asli di samping string yang dinormalisasi ketika tahap selanjutnya perlu merekonstruksi TOML atau menjadwalkan pekerjaan. Jika tidak, terimalah bahwa JSON membawa teks tampilan dan hindari mempromosikannya secara diam-diam ke stempel waktu universal.