Startseite » Codierung » Eine endgültige Möglichkeit, Datumsangaben für internationale Standorte zu formatieren

    Eine endgültige Möglichkeit, Datumsangaben für internationale Standorte zu formatieren

    Datumsformate variieren je nach Region und Sprache. Daher ist es immer hilfreich, wenn wir den Benutzern die Möglichkeit bieten, den Benutzern Datumsangaben anzuzeigen, die für ihre Sprache und Region spezifisch sind.

    Bereits im Dezember 2012 veröffentlichte ECMA die Spezifikationen der Internationalization API for JavaScript. Die Internationalisierungs-API hilft uns bei der Anzeige bestimmter Daten gemäß der Sprache und den kulturellen Spezifikationen. Es kann verwendet werden identifizieren Währungen, Zeitzonen und mehr.

    In diesem Beitrag werden wir nachsehen Datumsformatierung mit dieser API.

    Kennen Sie das Gebietsschema des Benutzers

    Um das Datum als bevorzugtes Gebietsschema eines Benutzers anzuzeigen, müssen wir zunächst wissen, welches das bevorzugte Gebietsschema ist. Derzeit ist die narrensichere Methode, den Benutzer zu fragen; Benutzer können ihre bevorzugten Sprach- und Regionseinstellungen auf der Webseite auswählen.

    Wenn dies jedoch keine Option ist, können Sie das interpretieren Accept-Language Header anfordern oder lesen navigator.language(für Chrome und Firefox) oder navigator.browserLanguage(für IE) Werte.

    Bitte beachten Sie, dass nicht alle diese Optionen die bevorzugte Sprache der Browser-Benutzeroberfläche zurückgeben.

     var language_tag = window.navigator.browserLanguage || window.navigator.language || "en"; // gibt Sprachkennungen wie 'en-GB' zurück 

    Überprüfen Sie die Internationalisierungs-API

    Um festzustellen, ob der Browser die Internationalisierungs-API unterstützt, können wir das Vorhandensein des globalen Objekts überprüfen Intl.

     if (window.hatOwnProperty '‹("Intl") && typeof Intl === "object") // Die Internationalisierungs-API ist vorhanden. Verwenden Sie diese Option. 

    Das Intl Objekt

    Intl ist ein globales Objekt für die Verwendung der Internationalisierungs-API. Es hat drei Eigenschaften, nämlich Konstruktoren für drei Objekte Collator, Zahlenformat, und DateTimeFormat.

    Das Objekt, das wir verwenden werden, ist DateTimeFormat Das hilft uns, Datum und Uhrzeit nach verschiedenen Sprachen zu formatieren.

    Das DateTimeFormat Objekt

    Das DateTimeFormat Konstruktor akzeptiert zwei optionale Argumente.

    • locales - ein String oder ein Array von Strings, die zum Beispiel die Sprach-Tags darstellen; “de” für die deutsche Sprache, “en-GB” für Englisch in Großbritannien. Wenn ein Sprachentag nicht erwähnt wird, ist das Standardgebietsschema das der Laufzeitumgebung.
    • Optionen - ein Objekt, dessen Eigenschaften zur Anpassung des Formatierers verwendet werden. Es hat die folgenden Eigenschaften:
    Eigentum Beschreibung Mögliche Werte
    Tag Tag des Monats “2-stellig”, “numerisch”
    Epoche Ära, in die das Datum fällt, Ex: BC “eng”, “kurz”, “lange”
    formatMatcher Der für den Formatabgleich verwendete Algorithmus “Basic”, “beste Passform”[Standard]
    Stunde Stunden in der Zeit darstellen “2-stellig”, “numerisch”
    Stunde12 Zeigt das 12-Stunden-Format an (wahr) oder 24-Stunden-Format (falsch) wahr, falsch
    localeMatcher Der für das Gebietsschemaabgleich verwendete Algorithmus “Sieh nach oben”, “beste Passform”[Standard]
    Minute Minuten in der Zeit “2-stellig”, “numerisch”
    Monat Monat im Jahr “2-stellig”, “numerisch”, “eng”, “kurz”, “lange”
    zweite Sekunden in der Zeit “2-stellig”, “numerisch”
    Zeitzone Anzuwendende Zeitzone “koordinierte Weltzeit”, Die Standardeinstellung ist die Laufzeitzeitzone
    timeZoneName Zeitzone des Datums “kurz”, “lange”
    Wochentag Tag in der Woche “eng”, “kurz”, “lange”
    Jahr Jahr des Datums “2-stellig”, “numerisch”

    Beispiel:

     var formatter = new Intl.DateTimeFormat ('en-GB'); / * gibt einen Formatierer zurück, der ein Datum im englischen Datumsformat formatieren kann * / 
     var options = Wochentag: 'short'; var formatter = new Intl.DateTimeFormat ('en-GB', Optionen); / * gibt ein Formatierungsprogramm zurück, das ein Datum im britischen englischen Datumsformat formatieren kann * zusammen mit dem Wochentag in Kurznotation wie "Do" für Donnerstag * / 

    Das Format Funktion

    Die Instanz des DateTimeFormat object hat einen Eigenschafts-Accessor (Getter), der aufgerufen wird Format die eine Funktion zurückgibt, die a formatiert Datum basierend auf locales und Optionen im gefunden DateTimeFormat Beispiel.

    Die Funktion dauert a Datum Objekt oder nicht definiert als optionales Argument und gibt a zurück Schnur im gewünschten Datumsformat.

    Hinweis: Wenn das Argument entweder ist nicht definiert oder nicht angegeben, dann wird der Wert von zurückgegeben Date.now () im gewünschten Datumsformat.

    Hier ist die Syntax:

     new Intl.DateTimeFormat (). format () // gibt das aktuelle Datum im Laufzeitformat zurück 

    Und jetzt lassen Sie uns eine einfache Datumsformatierung vornehmen.

    Lass uns die Sprache ändern und die Ausgabe sehen.

    Nun ist es an der Zeit, nach Optionen zu suchen.

    Das toLocaleDateString Methode

    Anstelle eines Formatierers wie in den obigen Beispielen können Sie auch verwenden Date.prototype.toLocaleString auf die gleiche Weise mit der locales und Optionen Argumente, sie sind ähnlich, aber es wird empfohlen, die DateTimeFormat Objekt, wenn zu viele Daten in Ihrer Anwendung verarbeitet werden.

     var mydate = neues Datum ('2015/04/22'); var options = Wochentag: "kurz", Jahr: "numerisch", Monat: "lang", Tag: "numerisch"; console.log (mydate.toLocaleDateString ('en-GB', Optionen)); // kehrt zurück "Mi, 22. April 2015" 

    Testen Sie, ob die locales sind unterstützt

    Um nach dem unterstützten zu suchen locales, Wir können die Methode verwenden unterstütztLocalesOf von DateTimeFormat Objekt. Es gibt ein Array aller unterstützenden Gebietsschemas zurück oder ein leeres Array, wenn keines der Gebietsschemas unterstützt wird.

    Fügen Sie zum Testen ein Dummy-Gebietsschema hinzu “blah” in der Liste der zu überprüfenden Locales.

     console.log (Intl.DateTimeFormat.supportedLocalesOf (["zh", "blah", "fa-pes"])); // gibt Array ["zh", "fa-pes"] zurück 

    Browser-Unterstützung

    Ende April 2015 unterstützen wichtige Browser die Internationalization API.

    Verweise

    • ECMA International: ECMAScript Internationalization API-Spezifikation
    • IANA: Sprache Subtag Registry
    • Norbert's Corner: Die ECMAScript-Internationalisierungs-API