Galutinis būdas formatuoti tarptautinių svetainių datas
Datos formatai skiriasi priklausomai nuo regiono ir kalbos, todėl visada naudinga, jei galime rasti būdą, kaip parodyti datas vartotojams, būdingus jų kalbai ir regionui.
2012 m. Gruodžio mėn. ECMA išleido „Internationalization API“ „JavaScript“ specifikacijas. Internacionalizavimo API padeda mums parodyti tam tikrus duomenis pagal kalbos ir iškraipymo specifikacijas. Jis gali būti naudojamas nustatyti valiutas, laiko zonas ir dar.
Šiame pranešime mes ieškosime datos formatavimas naudojant šią API.
Žinokite vartotojo lokalę
Jei norite parodyti datą, kaip naudotojo pageidaujamą lokalę, pirmiausia turime žinoti, kas yra pageidaujama vietovė. Šiuo metu kvailas būdas žinoti, kad reikia paklausti vartotojo; leiskite naudotojams pasirinkti pageidaujamus kalbos ir regiono nustatymus tinklalapyje.
Tačiau, jei tai nėra galimybė, galite interpretuoti Priimti kalbą
prašyti antraštės arba skaityti navigator.language
(„Chrome“ ir „Firefox“) arba navigator.browserLanguage
(IE) reikšmėms.
Prašome žinoti, kad ne visos šios parinktys grąžina pageidaujamą naršyklės vartotojo sąsajos kalbą.
var language_tag = window.navigator.browserLanguage || window.navigator.language || "en"; // grąžina kalbos žymas, pvz., „en-GB“
Patikrinkite internacionalizavimo API
Norėdami sužinoti, ar naršyklė palaiko internacionalizavimo API, ar ne, galime patikrinti, ar yra pasaulinio objekto Intl
.
jei (window.hasOwnPropertyâ €)‹(„Intl“) & & typeof Intl === „objektas“) // Yra internacionalizavimo API, naudokime, kad
The Intl objektą
Intl
yra pasaulinis objektas, skirtas naudoti internacionalizavimo API. Ji turi tris savybes, kurios yra trijų objektų konstruktoriai Kolektorius
, NumberFormat
, ir DateTimeFormat
.
Objektas, kurį naudosime, yra DateTimeFormat
kuri padės mums formuoti datos laiką, kaip ir skirtingomis kalbomis.
The DateTimeFormat objektą
The DateTimeFormat
konstruktorius priima du neprivalomus argumentus;
vietovės
- eilutės arba eilutės, kurios žymi, pavyzdžiui, kalbos žymes; “de” vokiečių kalba, “lt-GB” anglų kalba, naudojama Jungtinėje Karalystėje. Jei kalbos žyma nenurodyta, numatytoji vietovė bus vykdymo trukmė.galimybės
- objektas, kurio ypatybės naudojamos formatavimui pritaikyti. Ji turi šias savybes:
Nuosavybė | apibūdinimas | Galimos vertės |
dieną | Mėnesio diena | “2 skaitmenų”, “skaitmeninis” |
eros | Era data patenka į: Ex: BC | “siauras”, “trumpas”, “ilgai” |
formatMatcher | Formatu atitikimo algoritmas | “paprastas”, “geriausiai tinkantis”[Numatytas] |
valandą | Atstovauja valandas | “2 skaitmenų”, “skaitmeninis” |
valandą12 | Rodo 12 valandų formatą (tiesa ) arba 24 valandų formatą (klaidinga ) | tiesa , klaidinga |
localeMatcher | Vietos atitikimo algoritmas | “paieškos”, “geriausiai tinkantis”[Numatytas] |
minutė | Protokolo laikas | “2 skaitmenų”, “skaitmeninis” |
mėnesį | Mėnuo per metus | “2 skaitmenų”, “skaitmeninis”, “siauras”, “trumpas”, “ilgai” |
antra | Sekundės tuo metu | “2 skaitmenų”, “skaitmeninis” |
laiko zona | Taikoma laiko juosta | “UTC”, numatytasis laikas yra vykdymo laiko zona |
timeZoneName | Datos laiko juosta | “trumpas”, “ilgai” |
savaitės diena | Diena savaitę | “siauras”, “trumpas”, “ilgai” |
metus | Datos metai | “2 skaitmenų”, “skaitmeninis” |
Pavyzdys:
var formatter = new Intl.DateTimeFormat ('en-GB'); / * grąžina formatuotoją, kuris gali formatuoti datą JK anglų kalba
var options = weekday: 'short'; var formatter = new Intl.DateTimeFormat („en-GB“, parinktys); / * grąžina formatavimo priemonę, kuri gali formatuoti datą JK anglų kalbos datos formatu * kartu su savaitės diena trumpu ženklu kaip „Thu“ ketvirtadienį * /
The formatą funkcija
. \ T DateTimeFormat
objektas turi nuosavybės prieigą (getter) formatą
kuri grąžina funkciją, kuri formatuoja a Data
remiantis vietovės
ir galimybės
rasti DateTimeFormat
instancija.
Funkcija užima a Data
objektas arba neapibrėžtas
kaip neprivalomas argumentas ir grąžina a eilutė
pageidaujamą datos formatą.
Pastaba: Jei argumentas taip pat yra neapibrėžtas
arba nepateikta, tada ji grąžina vertę Date.now ()
pageidaujamą datos formatą.
Čia yra sintaksė:
naujas Intl.DateTimeFormat (). formatas () // grąžins dabartinę datą vykdymo datos formatu
Ir dabar leiskite mums koduoti paprastą datos formatavimą.
Pakeiskime kalbą ir matysime išėjimą.
Dabar atėjo laikas ieškoti galimybių.
The toLocaleDateString metodas
Vietoj to, kad naudojate formatavimo formą, kaip parodyta aukščiau pateiktuose pavyzdžiuose, galite naudoti Date.prototype.toLocaleString
taip pat su vietovės
ir galimybės
argumentai, jie yra panašūs, tačiau rekomenduojama naudoti DateTimeFormat
objektas, kai susiduriate su pernelyg daug datų paraiškoje.
var mydate = new Date („2015/04/22“); var options = weekday: "short", metai: "skaitmeninis", mėnuo: "long", diena: "skaitmeninis"; console.log (mydate.toLocaleDateString („en-GB“, parinktys)); // grįžta į „Penk, 2015 m. balandžio 22 d.“
Patikrinkite, ar vietovės yra palaikomi
Norėdami patikrinti palaikomą vietovės
, mes galime naudoti šį metodą palaikomaLocalesOf
apie DateTimeFormat
objektą. Ji grąžina visų palaikančių lokalių masyvą arba tuščią matricą, jei nė viena iš vietinių vietų nepalaikoma.
Bandymui pridėkite manekeno lokalę “blah” tikrinamų vietovių sąraše.
console.log (Intl.DateTimeFormat.supportedLocalesOf (["zh", "blah", "fa-pes"])); // grąžina Array ["zh", "fa-pes"]
Naršyklės palaikymas
2015 m. Balandžio mėn. Pabaigoje pagrindinės naršyklės palaiko internacionalizavimo API.
Nuorodos
- ECMA Tarptautinė: ECMAScript internacionalizavimo API specifikacija
- IANA: Kalbos subtag registras
- „Norbert's Corner“: „ECMAScript“ internacionalizavimo API