Beranda » Coding » Cara Definitif untuk Memformat Tanggal untuk Situs Internasional

    Cara Definitif untuk Memformat Tanggal untuk Situs Internasional

    Format tanggal berbeda-beda sesuai wilayah dan bahasa, jadi, selalu membantu jika kita dapat menemukan cara untuk menampilkan tanggal kepada pengguna, khusus untuk bahasa dan wilayah mereka.

    Kembali pada bulan Desember 2012, ECMA merilis spesifikasi API Internasionalisasi untuk JavaScript. API Internasionalisasi membantu kami menampilkan data tertentu sesuai dengan bahasa dan spesifikasi cutural. Itu bisa digunakan untuk mengidentifikasi mata uang, zona waktu dan lainnya.

    Dalam posting ini kita akan melihat ke dalam pemformatan tanggal menggunakan API ini.

    Ketahui lokal pengguna

    Untuk menunjukkan tanggal sesuai lokal yang disukai pengguna, pertama-tama kita perlu tahu apa itu lokal yang disukai. Saat ini cara paling mudah untuk mengetahui itu adalah dengan bertanya kepada pengguna; memungkinkan pengguna memilih pengaturan bahasa dan wilayah yang mereka sukai di halaman web.

    Tetapi, jika itu bukan pilihan, Anda dapat menafsirkannya Bahasa Terima minta tajuk atau baca navigator.language(untuk Chrome dan Firefox) atau navigator.browserLanguage(untuk IE) nilai.

    Perlu diketahui bahwa tidak semua opsi tersebut mengembalikan bahasa yang disukai dari UI browser.

     var language_tag = window.navigator.browserLanguage || window.navigator.language || "id"; // mengembalikan tag bahasa seperti 'en-GB' 

    Periksa API Internasionalisasi

    Untuk mengetahui apakah browser mendukung API Internasionalisasi atau tidak, kami dapat memeriksa keberadaan objek global Intl.

     if (window.hasOwnPropertyâ €‹("Intl") && typeof Intl === "object") // API Internasionalisasi hadir, mari kita gunakan itu 

    Itu Intl obyek

    Intl adalah objek global untuk menggunakan API Internasionalisasi. Ini memiliki tiga properti yang merupakan konstruktor untuk tiga objek yaitu Kolator, NumberFormat, dan DateTimeFormat.

    Objek yang akan kita gunakan adalah DateTimeFormat yang akan membantu kami memformat waktu tanggal sesuai bahasa yang berbeda.

    Itu DateTimeFormat obyek

    Itu DateTimeFormat konstruktor mengambil dua argumen opsional;

    • lokal - string atau array string yang mewakili tag bahasa, misalnya; “de” untuk bahasa jerman, “id-GB” untuk bahasa Inggris yang digunakan di Inggris. Jika tag bahasa tidak disebutkan, lokal default akan menjadi runtime.
    • pilihan - sebuah objek yang propertinya digunakan untuk mengkustomisasi formatter. Ini memiliki sifat-sifat berikut:
    Milik Deskripsi Nilai yang mungkin
    hari Hari dalam sebulan “2 digit”, “numerik”
    era Era tanggal jatuh tempo, Kel: BC “sempit”, “pendek”, “panjang”
    formatMatcher Algoritma yang digunakan untuk pencocokan format “dasar”, “paling cocok”[Default]
    jam Merupakan Jam dalam waktu “2 digit”, “numerik”
    jam12 Menunjukkan format 12 jam (benar) atau format 24 jam (Salah) benar, Salah
    localeMatcher Algoritma yang digunakan untuk pencocokan lokal “menengadah”, “paling cocok”[Default]
    menit Menit dalam waktu “2 digit”, “numerik”
    bulan Bulan dalam setahun “2 digit”, “numerik”, “sempit”, “pendek”, “panjang”
    kedua Detik dalam waktu “2 digit”, “numerik”
    zona waktu Zona waktu untuk diterapkan “UTC”, default adalah zona waktu runtime
    timeZoneName Zona waktu tanggal “pendek”, “panjang”
    hari kerja Hari dalam seminggu “sempit”, “pendek”, “panjang”
    tahun Tahun tanggal “2 digit”, “numerik”

    Contoh:

     var formatter = new Intl.DateTimeFormat ('en-GB'); / * mengembalikan formatter yang dapat memformat tanggal dalam format tanggal Inggris Inggris * / 
     var options = weekday: 'short'; var formatter = new Intl.DateTimeFormat ('en-GB', options); / * mengembalikan formatter yang dapat memformat tanggal dalam format tanggal Inggris Inggris * bersama dengan hari kerja dalam notasi singkat seperti 'Kamis' untuk Kamis * / 

    Itu format fungsi

    Contoh dari DateTimeFormat objek memiliki accessor properti (pengambil) yang disebut format yang mengembalikan fungsi yang memformat a Tanggal berdasarkan pada lokal dan pilihan ditemukan di DateTimeFormat contoh.

    Fungsi ini mengambil a Tanggal objek atau tidak terdefinisi sebagai argumen opsional dan mengembalikan a tali dalam format tanggal yang diminta.

    catatan: Jika argumennya baik tidak terdefinisi atau tidak disediakan maka mengembalikan nilai Date.now () dalam format tanggal yang diminta.

    Berikut sintaksinya:

     format Intl.DateTimeFormat (). () // baru akan mengembalikan tanggal saat ini dalam format tanggal runtime 

    Dan sekarang mari kita kodekan format tanggal yang sederhana.

    Mari kita ubah bahasa dan lihat hasilnya.

    Sekarang, saatnya untuk melihat opsi.

    Itu toLocaleDateString metode

    Alih-alih menggunakan formatter seperti yang ditunjukkan pada contoh di atas, Anda juga dapat menggunakan Date.prototype.toLocaleString dengan cara yang sama dengan lokal dan pilihan argumen, mereka serupa tetapi disarankan untuk menggunakan DateTimeFormat keberatan ketika berhadapan dengan terlalu banyak tanggal dalam aplikasi Anda.

     var mydate = Tanggal baru ('2015/04/22'); var options = weekday: "short", tahun: "numeric", bulan: "long", hari: "numeric"; console.log (mydate.toLocaleDateString ('en-GB', options)); // mengembalikan "Rab, 22 April 2015" 

    Uji apakah lokal didukung

    Untuk memeriksa yang didukung lokal, kita bisa menggunakan metode ini didukungLocalesDari dari DateTimeFormat obyek. Ini mengembalikan array dari semua lokal yang mendukung atau array kosong jika tidak ada lokal yang didukung.

    Untuk pengujian, mari kita tambahkan lokal boneka “bla” dalam daftar lokasi yang akan diperiksa.

     console.log (Intl.DateTimeFormat.supportedLocalesOf (["zh", "blah", "fa-pes"])); // mengembalikan Array ["zh", "fa-pes"] 

    Dukungan Browser

    Pada akhir April 2015, browser utama mendukung API Internasionalisasi.

    Referensi

    • ECMA Internasional: Spesifikasi API Internasionalisasi Script ECMAS
    • IANA: Registry Subtag Bahasa
    • Norbert's Corner: API Internasionalisasi Script ECMAS