Végleges út a nemzetközi helyek dátumainak formázásához
A dátumformátumok régiónként és nyelvenként eltérőek, ezért mindig hasznos, ha megtaláljuk a dátumokat a felhasználók számára a nyelvükre és régiójukra jellemző módon..
2012 decemberében az ECMA kiadta a JavaScript-hez kapcsolódó Internationalization API specifikációit. Az internacionalizációs API segít bizonyos adatok megjelenítésében a nyelv és a vágási specifikáció szerint. Használható azonosítsa a pénznemeket, az időzónákat és több.
Ebben a hozzászólásban megvizsgáljuk dátum formázása használja ezt az API-t.
Ismerje meg a felhasználó helyét
A felhasználó által preferált helyszínre vonatkozó dátum megjelenítéséhez először tudnunk kell, hogy mi az előnyben részesített hely. Jelenleg az a bolondbiztos módszer, hogy tudjuk, hogy kérje a felhasználót; hagyja, hogy a felhasználók kiválaszthassák a kívánt nyelvi és régió beállításokat a weboldalon.
De ha ez nem egy lehetőség, akkor értelmezheti azt Accept-Language
kérje a fejlécet, vagy olvassa el a navigator.language
(Chrome és Firefox esetén) vagy navigator.browserLanguage
(IE) értékek.
Kérjük, vegye figyelembe, hogy nem minden ilyen opció adja vissza a böngésző felhasználói felületének preferált nyelvét.
var language_tag = window.navigator.browserLanguage || window.navigator.language || "En"; // olyan nyelvi címkéket ad vissza, mint a 'en-GB'
Ellenőrizze az internacionalizálási API-t
Ha szeretné tudni, hogy a böngésző támogatja-e az internacionalizációs API-t, vagy nem, ellenőrizhetjük a globális objektum jelenlétét Intl
.
if (window.hasOwnPropertyâ €‹("Intl") & & typeof Intl === "objektum") // Az internacionalizációs API jelen van, használjuk azt
A Intl tárgy
Intl
egy globális objektum az internacionalizációs API használatához. Három tulajdonsága van, amelyek három objektum építői Collator
, NumberFormat
, és DateTimeFormat
.
Az az objektum, amelyet használni fogunk DateTimeFormat
amely a dátum időpontját különböző nyelveken segítheti.
A DateTimeFormat tárgy
A DateTimeFormat
a konstruktor két választható érvet vesz fel;
helyszíneken
- egy karakterlánc vagy sztring tömb, amely például a nyelvi címkéket reprezentálja; “de” német nyelvre, “hu-HU” az Egyesült Királyságban használt angol nyelvű. Ha egy nyelvi címkét nem említenek, az alapértelmezett helyszín a futási idő.opciók
- olyan objektum, amelynek tulajdonságait a formázó testreszabására használják. A következő tulajdonságokkal rendelkezik:
Ingatlan | Leírás | Lehetséges értékek |
nap | A hónap napja | “2-jegyű”, “numerikus” |
korszak | Era a dátum alá esik, pl. BC | “keskeny”, “rövid”, “hosszú” |
formatMatcher | A formázáshoz használt algoritmus | “alapvető”, “legjobban illeszkedő”[Alapértelmezett] |
óra | Az idők óráját képviseli | “2-jegyű”, “numerikus” |
hour12 | 12 órás formátumot jelez (igaz ) vagy 24 órás formátumban (hamis ) | igaz , hamis |
localeMatcher | A területi egyezéshez használt algoritmus | “Nézz fel”, “legjobban illeszkedő”[Alapértelmezett] |
perc | Percek az időben | “2-jegyű”, “numerikus” |
hónap | Egy hónap hónapja | “2-jegyű”, “numerikus”, “keskeny”, “rövid”, “hosszú” |
második | Másodpercek az idő alatt | “2-jegyű”, “numerikus” |
időzóna | Időzóna alkalmazandó | “UTC”, az alapértelmezett a futási időzóna |
timeZoneName | A dátum időzónája | “rövid”, “hosszú” |
hétköznap | Nap a héten | “keskeny”, “rövid”, “hosszú” |
év | A dátum éve | “2-jegyű”, “numerikus” |
Példa:
var formatter = új Intl.DateTimeFormat ('en-GB'); / * visszaad egy formázót, amely formázhat egy dátumot angol nyelven angol formátumban * /
var options = hétköznap: 'rövid'; var formatter = új Intl.DateTimeFormat ('en-GB', opciók); / * visszaad egy formázót, amely formázhat egy dátumot az angol nyelvű dátumformátumban *, valamint a hétköznap rövid jelöléssel, mint a 'Thu' csütörtökön * /
A formátum funkció
A DateTimeFormat
az objektumnak van egy tulajdonság-hozzáférõje (getter) formátum
amely az a formátumú függvényt adja vissza Dátum
alapján helyszíneken
és opciók
megtalálható a DateTimeFormat
példa.
A funkció a Dátum
objektum vagy határozatlan
opcionális argumentumként, és visszatér a húr
a kívánt dátumformátumban.
Jegyzet: Ha az érv is határozatlan
vagy nem, akkor visszaadja az értékét Date.now ()
a kívánt dátumformátumban.
Íme a szintaxis:
az új Intl.DateTimeFormat (). formátum () // visszaadja az aktuális dátumot a futásidejű formátumban
És most kódoljunk egy egyszerű dátumformázást.
Változtassuk meg a nyelvet, és nézzük meg a kimenetet.
Most itt az ideje, hogy vizsgálja meg a lehetőségeket.
A toLocaleDateString eljárás
A fenti példákban bemutatott formázó használata helyett használhatja Date.prototype.toLocaleString
azonos módon helyszíneken
és opciók
érvek, ezek hasonlóak, de ajánlott a DateTimeFormat
objektumot, ha túl sok dátumot kezel az alkalmazásban.
var mydate = new Date ('2015/04/22'); var options = hétköznap: "rövid", év: "numerikus", hónap: "hosszú", nap: "numerikus"; console.log (mydate.toLocaleDateString ( 'en-GB', opciók)); // visszatér "Wed, 2015. április 22."
Tesztelje, hogy a helyszíneken támogatottak
A támogatottak ellenőrzése helyszíneken
, használhatjuk a módszert supportedLocalesOf
nak,-nek DateTimeFormat
tárgy. Visszatér egy támogató helyszín tömbjét vagy egy üres tömböt, ha a helyi helyek egyike sem támogatott.
A teszteléshez adjunk hozzá egy dummy locale-t “blabla” az ellenőrzendő helyek listájában.
console.log (Intl.DateTimeFormat.supportedLocalesOf (["zh", "blah", "fa-pes"])); // visszaadja az Array-t ["zh", "fa-pes"]
Böngésző támogatás
2015. április végén a nagyobb böngészők támogatják az internacionalizációs API-t.
Irodalom
- ECMA Nemzetközi: ECMAScript Internationalization API specifikáció
- IANA: Nyelvi részkönyvtár
- Norbert Corner: Az ECMAScript Internationalizációs API