Homepage » Coding » Végleges út a nemzetközi helyek dátumainak formázásához

    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