Globalize wird IANA timezones auf der kommenden Version 1.3 unterstützen!
npm install [email protected] cldr-data iana-tz-data
Dann
var Globalize = require("globalize");
Globalize.load(require("cldr-data").entireSupplemental());
Globalize.load(require("cldr-data").entireMainFor("en"));
Globalize.loadIANATimezone(require("iana-tz-data"));
Globalize("en").formatDate(new Date(), {datetime: "short", timeZone: "America/Los_Angeles"});
// > '3/19/17, 3:19 PM'
Globalize("en").formatDate(new Date(), {datetime: "short", timeZone: "America/New_York"});
// > '3/19/17, 6:19 PM'
Globalize("en").formatDate(new Date(), {datetime: "short", timeZone: "America/Sao_Paulo"});
// > '3/19/17, 7:19 PM'
Globalize("en").formatDate(new Date(), {datetime: "short", timeZone: "Europe/Berlin"});
// > '3/19/17, 11:19 PM'
Globalize("en").formatDate(new Date(), {datetime: "full", timeZone: "America/Los_Angeles"});
// > 'Sunday, March 19, 2017 at 3:19:22 PM Pacific Daylight Time'
Globalize("en").formatDate(new Date(), {datetime: "full", timeZone: "America/New_York"});
// > 'Sunday, March 19, 2017 at 6:19:22 PM Eastern Daylight Time'
Globalize("en").formatDate(new Date(), {datetime: "full", timeZone: "America/Sao_Paulo"});
// > 'Sunday, March 19, 2017 at 7:19:22 PM Brasilia Standard Time'
Globalize("en").formatDate(new Date(), {datetime: "full", timeZone: "Europe/Berlin"});
// > 'Sunday, March 19, 2017 at 11:19:53 PM Central European Standard Time'
PS: Beachten Sie unterstützt auch Datumszeichenketten in bestimmten IANA Zeitzonen Parsen.
Einzelheiten hier https://github.com/globalizejs/globalize/pull/701#issuecomment-287652673
Alte Antwort:
Können Sie moment.js für Datum Manipulation verwenden und Globalize verwenden das Datum für die Formatierung ohne die Zeitzone Teil, dh Ihr zweites Beispiel mit {datetime: "medium"}
[ 1]. Ist das für Sie machbar? Alternativ könnten Sie das verwenden plus moment.js, um den Namen der Zeitzone für Sie zu drucken?
1: Wenn Sie ein anderes/benutzerdefiniertes Muster benötigen, können Sie {skeleton: <pattern>}
verwenden.
Die richtige Antwort
Zeitzone Unterstützung globalisieren beschränkt sich auf das, was durch das native JavaScript Date angeboten wird, dessen Zeitzone Unterstützung beschränkt sich auf die Benutzer der lokalen Zeitzone Offset bekommen und das ist alles, das heißt, es ist nicht der Einstellung Datum mit einem anderen Zeitzonennamen oder Zeitzonenoffset. Daher kann nur die lokale Zeitzone des Benutzers formatiert werden (keine willkürliche). Daher glaube ich, dass Globalize Ihnen beim Formatieren von Datum und Uhrzeit nützlich sein wird, aber nicht für den Zeitzonenbereich. Wenn Sie mehr über die Zeitzonenunterstützung von Globalize erfahren möchten, finden Sie Details unter https://github.com/jquery/globalize/pull/202#issuecomment-33020199.
Verwenden von Globalize, um das Datum zu formatieren, gibt Ihnen eine CLDR-konforme Formatierung (und aktuelle Länderdaten) und es wird Laufzeitunterstützung: kleine endgültige Dateigröße (für schnelleres Laden der Seite) und vorkompilierte Formatierung (für schnellere Ausführung auf dem Client) (more info). Ich hoffe, dass dies eine Hilfe sein könnte, lassen Sie es mich wissen, wenn Sie weitere Fragen haben.
OK, vielen Dank für die Erklärung, die meisten was ich herausgefunden habe.Ich verwende beide Komponenten in einer Knoten-Anwendung, um Kunden zu ermöglichen, ihre Daten (in seltsamen Zeitzonen) mit auswählbaren Vorlagen zu formatieren, also mochte ich die Möglichkeit, die date/time/datetime + short/meidum/long/volle Vorlagen zu verwenden Globalisierung, aber ich muss eine andere Lösung verwenden, denke ich. Danke trotzdem! –