Trang chủ » Mã hóa » Một cách dứt khoát để định dạng ngày cho các trang web quốc tế

    Một cách dứt khoát để định dạng ngày cho các trang web quốc tế

    Định dạng ngày thay đổi theo vùng và ngôn ngữ, vì vậy, sẽ rất hữu ích nếu chúng ta có thể tìm cách hiển thị ngày cho người dùng, cụ thể theo ngôn ngữ và vùng của họ.

    Trở lại vào tháng 12 năm 2012, ECMA đã phát hành các thông số kỹ thuật của API quốc tế hóa cho JavaScript. API quốc tế hóa giúp chúng tôi hiển thị một số dữ liệu nhất định theo đặc điểm kỹ thuật và ngôn ngữ. Nó có thể được sử dụng để xác định tiền tệ, múi giờ và hơn thế nữa.

    Trong bài viết này, chúng tôi sẽ xem xét định dạng ngày sử dụng API này.

    Biết địa điểm của người dùng

    Để hiển thị ngày theo miền địa phương ưa thích của người dùng, trước tiên chúng ta cần biết miền địa phương ưa thích đó là gì. Hiện tại cách dễ dàng để biết đó là hỏi người dùng; cho phép người dùng chọn cài đặt ngôn ngữ và khu vực ưa thích của họ trong trang web.

    Nhưng, nếu đó không phải là một lựa chọn, bạn có thể diễn giải Ngôn ngữ chấp nhận yêu cầu tiêu đề hoặc đọc hoa tiêu(đối với Chrome và Firefox) hoặc navigator.browser Ngôn ngữ(đối với IE) giá trị.

    Vui lòng biết rằng không phải tất cả các tùy chọn đó đều trả về ngôn ngữ ưa thích của giao diện người dùng trình duyệt.

     var ngôn ngữ_tag = window.navigator.browser Ngôn ngữ | | window.navigator.l Language || "vi"; // trả về các thẻ ngôn ngữ như 'en-GB' 

    Kiểm tra API quốc tế hóa

    Để biết trình duyệt có hỗ trợ API quốc tế hóa hay không, chúng ta có thể kiểm tra sự hiện diện của đối tượng toàn cầu Quốc tế.

     if (window.hasOwnPropertyâ €‹("Intl") && typeof Intl === "object") // API quốc tế hóa có mặt, chúng ta hãy sử dụng nó 

    Các Quốc tế vật

    Quốc tế là một đối tượng toàn cầu để sử dụng API quốc tế hóa. Nó có ba thuộc tính là constructor cho ba đối tượng cụ thể là Collator, Số định dạng, và DateTimeFormat.

    Đối tượng chúng ta sẽ sử dụng là DateTimeFormat Điều này sẽ giúp chúng tôi định dạng thời gian ngày theo các ngôn ngữ khác nhau.

    Các DateTimeFormat vật

    Các DateTimeFormat constructor có hai đối số tùy chọn;

    • địa phương - một chuỗi hoặc một chuỗi các chuỗi đại diện cho các thẻ ngôn ngữ, ví dụ; “de” cho tiếng Đức, “en-GB” cho tiếng Anh được sử dụng tại Vương quốc Anh. Nếu thẻ ngôn ngữ không được đề cập, ngôn ngữ mặc định sẽ là ngôn ngữ thời gian chạy.
    • tùy chọn - một đối tượng có thuộc tính được sử dụng để tùy chỉnh bộ định dạng. Nó có các thuộc tính sau:
    Bất động sản Sự miêu tả Những giá trị khả thi
    ngày Ngày trong tháng “2 chữ số”, “số”
    kỷ nguyên Thời đại rơi vào, ví dụ: BC “hẹp”, “ngắn”, “Dài”
    formatMatcher Thuật toán được sử dụng để khớp định dạng “căn bản”, “phù hợp nhất”[Mặc định]
    giờ Đại diện cho giờ trong thời gian “2 chữ số”, “số”
    giờ12 Cho biết định dạng 12 giờ (thật) hoặc định dạng 24 giờ (sai) thật, sai
    localeMatcher Thuật toán được sử dụng để kết hợp miền địa phương “tra cứu”, “phù hợp nhất”[Mặc định]
    phút Phút trong thời gian “2 chữ số”, “số”
    tháng Tháng trong một năm “2 chữ số”, “số”, “hẹp”, “ngắn”, “Dài”
    thứ hai Giây trong thời gian “2 chữ số”, “số”
    Múi giờ Múi giờ để áp dụng “UTC”, mặc định là múi giờ thời gian chạy
    timeZoneName Múi giờ của ngày “ngắn”, “Dài”
    các ngày trong tuần Ngày trong tuần “hẹp”, “ngắn”, “Dài”
    năm Năm của ngày “2 chữ số”, “số”

    Thí dụ:

     var formatter = new Intl.DateTimeFormat ('en-GB'); / * trả về một trình định dạng có thể định dạng một ngày ở định dạng ngày tiếng Anh Anh * / 
     tùy chọn var = ngày trong tuần: 'ngắn'; var formatter = new Intl.DateTimeFormat ('en-GB', tùy chọn); / * trả về một trình định dạng có thể định dạng một ngày theo định dạng ngày tiếng Anh của Anh * cùng với các ngày trong tuần theo ký hiệu ngắn như 'Thu' cho thứ Năm * / 

    Các định dạng chức năng

    Ví dụ của DateTimeFormat đối tượng có một trình truy cập thuộc tính (getter) được gọi là định dạng trong đó trả về một hàm định dạng một Ngày dựa vào địa phươngtùy chọn tìm thấy trong DateTimeFormat ví dụ.

    Hàm có một Ngày đối tượng hoặc chưa xác định như một đối số tùy chọn và trả về một chuỗi trong định dạng ngày yêu cầu.

    Chú thích: Nếu đối số là một trong hai chưa xác định hoặc không được cung cấp thì nó trả về giá trị của Ngày.now () trong định dạng ngày yêu cầu.

    Đây là cú pháp:

     new Intl.DateTimeFormat (). format () // sẽ trả về ngày hiện tại ở định dạng ngày chạy 

    Và bây giờ hãy để chúng tôi mã định dạng ngày đơn giản.

    Hãy để chúng tôi thay đổi ngôn ngữ và xem đầu ra.

    Bây giờ, đã đến lúc xem xét các lựa chọn.

    Các toLocaleDateString phương pháp

    Thay vì sử dụng một trình định dạng như trong các ví dụ trên, bạn cũng có thể sử dụng Date.prototype.toLocaleString theo cùng một cách với địa phươngtùy chọn đối số, chúng tương tự nhau nhưng nên sử dụng DateTimeFormat phản đối khi xử lý quá nhiều ngày trong ứng dụng của bạn.

     var mydate = Ngày mới ('2015/04/22'); var Options = weekday: "short", năm: "số", tháng: "dài", ngày: "số"; console.log (mydate.toLocaleDateString ('en-GB', tùy chọn)); // trả về "Thứ tư, ngày 22 tháng 4 năm 2015" 

    Kiểm tra nếu địa phương được hỗ trợ

    Để kiểm tra sự hỗ trợ địa phương, chúng ta có thể sử dụng phương pháp được hỗ trợLocalesOf của DateTimeFormat vật. Nó trả về một mảng của tất cả các vị trí hỗ trợ hoặc một mảng trống nếu không có vị trí nào được hỗ trợ.

    Để thử nghiệm, chúng ta hãy thêm một địa điểm giả “blah” trong danh sách các địa điểm cần kiểm tra.

     console.log (Intl.DateTimeFormat.supportedLocalesOf (["zh", "blah", "fa-pes"])); // trả về Mảng ["zh", "fa-pes"] 

    Hỗ trợ trình duyệt

    Vào cuối tháng 4 năm 2015, các trình duyệt chính hỗ trợ API quốc tế hóa.

    Tài liệu tham khảo

    • ECMA Quốc tế: Đặc tả API quốc tế hóa ECMAScript
    • IANA: Đăng ký ngôn ngữ
    • Góc của Norbert: API quốc tế hóa ECMAScript