Početna » šifriranje » Definitivan način formatiranja datuma za međunarodne stranice

    Definitivan način formatiranja datuma za međunarodne stranice

    Formati datuma se razlikuju ovisno o regiji i jeziku, pa je uvijek korisno ako pronađemo način za prikaz datuma korisnicima, specifično za njihov jezik i regiju.

    U prosincu 2012. ECMA je objavila specifikacije API-ja za internacionalizaciju za JavaScript. API internacionalizacije pomaže nam prikazati određene podatke prema jeziku i specifikaciji jezika. Može se koristiti odrediti valute, vremenske zone i više.

    U ovom postu ćemo istraživati formatiranje datuma pomoću ovog API-ja.

    Upoznajte lokalizaciju korisnika

    Da biste prikazali datum kao po želji korisnika po želji korisnika, prvo trebamo znati što je to preferirano područje. Trenutno siguran način da znate da je to pitati korisnika; omogućuju korisnicima da odaberu željene postavke jezika i regije na web-stranici.

    Ali, ako to nije opcija, možete protumačiti Accept-Language zatražite zaglavlje ili pročitajte navigator.language(za Chrome i Firefox) ili navigator.browserLanguage(za IE) vrijednosti.

    Imajte na umu da sve te opcije ne vraćaju željeni jezik korisničkog sučelja preglednika.

     var language_tag = window.navigator.browserLanguage || window.navigator.language || "En"; // vraća oznake jezika poput "en-GB" 

    Provjerite API za internacionalizaciju

    Da bismo znali podržava li preglednik API za internacionalizaciju ili ne, možemo provjeriti prisutnost globalnog objekta Intl.

     ako (window.hasOwnPropertyâ €‹("Intl") && typeof Intl === "objekt") // Prisutan je API za internacionalizaciju 

    Intl objekt

    Intl je globalni objekt za korištenje API-ja za internacionalizaciju. Ima tri svojstva koja su konstruktori za tri objekta, naime kružilica, NumberFormat, i DateTimeFormat.

    Objekt koji ćemo koristiti jest DateTimeFormat koji će nam pomoći u formatiranju vremena prema različitim jezicima.

    DateTimeFormat objekt

    DateTimeFormat konstruktor uzima dva izborna argumenta;

    • lokalizacije - niz ili niz nizova koji predstavljaju jezične oznake, na primjer; “de” za njemački jezik, “hr-HR” za engleski jezik koji se koristi u Velikoj Britaniji. Ako se ne spominje jezična oznaka, zadana oznaka jezika bit će ona od izvođenja.
    • opcije - objekt čija se svojstva koriste za prilagodbu formatera. Ima sljedeća svojstva:
    svojstvo Opis Moguće vrijednosti
    dan Dan u mjesecu “2-znamenkasti”, “numerički”
    doba Era datum pada u Ex: BC “suziti”, “kratak”, “dugo”
    formatMatcher Algoritam koji se koristi za podudaranje formata “Osnovni, temeljni”, “najbolje odgovara”[Zadano]
    sat Predstavlja sate u vremenu “2-znamenkasti”, “numerički”
    hour12 Označava 12-satni format (pravi) ili 24-satni format (lažan) pravi, lažan
    localeMatcher Algoritam koji se koristi za podudaranje mjesta “Pogledaj”, “najbolje odgovara”[Zadano]
    minuta Minute u vremenu “2-znamenkasti”, “numerički”
    mjesec Mjesec u godini “2-znamenkasti”, “numerički”, “suziti”, “kratak”, “dugo”
    drugi Sekunde u vremenu “2-znamenkasti”, “numerički”
    Vremenska zona Vremenska zona za primjenu “UTC”, zadana je vremenska zona vremena izvođenja
    timeZoneName Vremenska zona datuma “kratak”, “dugo”
    radni dan Dan u tjednu “suziti”, “kratak”, “dugo”
    godina Godina datuma “2-znamenkasti”, “numerički”

    Primjer:

     var formatter = novo Intl.DateTimeFormat ('en-GB'); / * vraća format koji može formatirati datum u formatu datuma na engleskom jeziku * / 
     var options = dan u tjednu: 'kratki'; var formatter = novi Intl.DateTimeFormat ('en-GB', opcije); / * vraća format koji može formatirati datum u engleskom formatu datuma * zajedno s danom u tjednu u kratkoj notaciji poput 'čet' za četvrtak * / 

    format funkcija

    Primjer DateTimeFormat objekt ima svojstvo pristupnika (getter) format koja vraća funkciju koja formatira a Datum bazirano na lokalizacije i opcije pronađeno u DateTimeFormat primjer.

    Funkcija uzima a Datum objekta ili nedefiniran kao opcijski argument i vraća niz u željenom formatu datuma.

    Bilješka: Ako je i argument nedefiniran ili nije pod uvjetom da vraća vrijednost Date.now () u željenom formatu datuma.

    Evo sintakse:

     new Intl.DateTimeFormat (). format () // će vratiti trenutni datum u formatu datuma izvođenja 

    Sada ćemo kodirati jednostavno formatiranje datuma.

    Promijenimo jezik i vidimo izlaz.

    Sada je vrijeme da pogledamo opcije.

    toLocaleDateString način

    Umjesto korištenja formatera kao što je prikazano u gornjim primjerima, također možete koristiti Date.prototype.toLocaleString na isti način s lokalizacije i opcije argumenti, oni su slični, ali se preporuča koristiti DateTimeFormat objekt u odnosu na previše datuma u vašoj prijavi.

     var mydate = novi datum ('2015/04/22'); var options = dan u tjednu: "short", godina: "numeric", mjesec: "long", day: "numeric"; console.log (mydate.toLocaleDateString ( 'en-GB', opcije)); // vraća se "Sri, 22. travnja 2015." 

    Testirajte je li lokalizacije su podržani

    Za provjeru podržanih lokalizacije, možemo koristiti metodu supportedLocalesOf od DateTimeFormat objekt. Ona vraća niz svih podržanih jezika ili praznog polja ako nije podržan nijedan od lokaliteta.

    Za testiranje dodajte lažnu oznaku zemlje / jezika “pretjerivanje” na popisu mjesta koje treba provjeriti.

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

    Podrška za preglednik

    Krajem travnja 2015. glavni preglednici podržavaju API za internacionalizaciju.

    Reference

    • ECMA Međunarodni: Specifikacija API-ja za ECMAScript internacionalizaciju
    • IANA: Registar jezika Subtag
    • Norbertov kutak: ECMAScript Internacionalizacija API