Definitivní způsob, jak formátovat data pro mezinárodní stránky
Formáty data se liší podle regionu a jazyka, takže je vždy užitečné, pokud můžeme najít způsob, jak zobrazit data uživatelům, která jsou specifická pro jejich jazyk a region..
V prosinci 2012 vydala agentura ECMA specifikace rozhraní API pro internacionalizaci jazyka JavaScript. Internacionalizační API nám pomáhá zobrazovat určitá data podle jazykové a jazykové specifikace. Může být zvyklý identifikovat měny, časové zóny a více.
V tomto příspěvku se podíváme do formátování data pomocí tohoto API.
Znát národní prostředí uživatele
Chcete-li zobrazit datum podle preferovaného národního prostředí uživatele, musíme nejprve zjistit, jaké je preferované národní prostředí. V současné době je spolehlivý způsob, jak vědět, že je požádat uživatele; umožnit uživatelům vybrat preferované nastavení jazyka a oblasti na webové stránce.
Pokud to však není možnost, můžete interpretovat Přijmout-jazyk
nebo číst navigator.language
(pro Chrome a Firefox) nebo navigator.browserLanguage
(pro IE) hodnoty.
Vezměte prosím na vědomí, že ne všechny tyto možnosti vrátí preferovaný jazyk uživatelského rozhraní prohlížeče.
var language_tag = window.navigator.browserLanguage || window.navigator.language || "en"; // vrátí tagy jazyka jako 'en-GB'
Zkontrolujte rozhraní API pro internacionalizaci
Chcete-li vědět, zda prohlížeč podporuje rozhraní API pro internacionalizaci nebo ne, můžeme zkontrolovat přítomnost globálního objektu Intl
.
if (window.hasOwnPropertyâ €‹("Intl") && typeof Intl === "object") // Internacionalizační API je přítomno, použijte nás
Intl objekt
Intl
je globální objekt pro použití API pro internacionalizaci. To má tři vlastnosti, které jsou konstruktory pro tři objekty jmenovitě Collator
, NumberFormat
, a DateTimeFormat
.
Objekt, který budeme používat, je DateTimeFormat
které nám pomohou formátovat datum podle různých jazyků.
DateTimeFormat objekt
DateTimeFormat
konstruktor vezme dva volitelné argumenty;
národního prostředí
- řetězec nebo pole řetězců, které představují například jazykové značky; “de” pro německý jazyk, “en-GB” pro angličtinu používanou ve Spojeném království. Pokud jazyková značka není uvedena, bude výchozím národním prostředím runtime.možností
- objekt, jehož vlastnosti se používají k přizpůsobení formátovače. Má následující vlastnosti:
Vlastnictví | Popis | Možné hodnoty |
den | Den v měsíci | “2místné”, “numerické” |
éra | Era datum spadá do, Ex: BC | “úzký”, “krátký”, “dlouho” |
formatMatcher | Algoritmus používaný pro přizpůsobení formátu | “základní”, “nejlépe padnou”[Výchozí] |
hodina | Představuje hodiny v čase | “2místné”, “numerické” |
hodina12 | Označuje 12hodinový formát (skutečný ) nebo 24hodinovém formátu (Nepravdivé ) | skutečný , Nepravdivé |
localeMatcher | Algoritmus používaný pro lokální přizpůsobení | “vzhlédnout”, “nejlépe padnou”[Výchozí] |
minuta | Minuty v čase | “2místné”, “numerické” |
Měsíc | Měsíc za rok | “2místné”, “numerické”, “úzký”, “krátký”, “dlouho” |
druhý | Sekundy v čase | “2místné”, “numerické” |
časové pásmo | Použít časové pásmo | “UTC”, výchozí je časové pásmo runtime |
timeZoneName | Časové pásmo data | “krátký”, “dlouho” |
všední den | Den v týdnu | “úzký”, “krátký”, “dlouho” |
rok | Rok data | “2místné”, “numerické” |
Příklad:
var formatter = new Intl.DateTimeFormat ('en-GB'); / * vrátí formátovač, který může formátovat datum ve formátu anglické datum * /
var options = weekday: 'short'; var formatter = new Intl.DateTimeFormat ('en-GB', možnosti); / * vrátí formátovač, který může formátovat datum ve formátu anglického anglického data * spolu se dnem v týdnu v krátkém zápisu jako „Thu“ pro čtvrtek * /
formát funkce
Instanci DateTimeFormat
objektu má volán vlastnost accessor (getter) formát
který vrací funkci, která formátuje a datum
založeno na národního prostředí
a možností
nalezené v DateTimeFormat
instance.
Funkce trvá a datum
objekt nebo undefined
jako volitelný argument a vrátí hodnotu a řetězec
v požadovaném formátu data.
Poznámka: Pokud je to argument undefined
nebo není poskytnuta, pak vrátí hodnotu Date.now ()
v požadovaném formátu data.
Zde je syntaxe:
new Intl.DateTimeFormat (). format () // vrátí aktuální datum ve formátu runtime data
A teď nám dovolte kódovat jednoduché formátování dat.
Změníme jazyk a uvidíme výstup.
Nyní je čas podívat se na možnosti.
toLocaleDateString metoda
Namísto použití formátovače, jak je uvedeno ve výše uvedených příkladech, můžete také použít Date.prototype.toLocaleString
stejným způsobem národního prostředí
a možností
jsou podobné, ale doporučuje se použít DateTimeFormat
objekt při práci s příliš mnoha daty ve vaší aplikaci.
var mydate = new Datum ('2015/04/22'); var options = weekday: "short", rok: "numeric", month: "long", day: "numeric"; console.log (mydate.toLocaleDateString ('en-GB', možnosti)); // vrací "St, 22. dubna 2015"
Otestujte, zda národního prostředí jsou podporovány
Chcete-li zkontrolovat podporované národního prostředí
, můžeme použít metodu supportedLocalesOf
z DateTimeFormat
objekt. Vrátí pole všech podporujících národního prostředí nebo prázdného pole, pokud není podporováno žádné národní prostředí.
Pro testování přidejme místní prostředí “bla” v seznamu míst, která mají být zkontrolována.
console.log (Intl.DateTimeFormat.supportedLocalesOf (["zh", "blah", "fa-pes"])); // vrátí Array ["zh", "fa-pes"]
Podpora prohlížeče
Na konci dubna 2015 podporují hlavní prohlížeče rozhraní API pro internacionalizaci.
Reference
- ECMA International: Specifikace API pro internacionalizaci ECMAScript
- IANA: Jazyk Subtag Registry
- Norbertův roh: Internacionalizační API ECMAScript