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