Ich weiß, wie man den Zeitzonenversatz erhält, aber was ich brauche, ist die Fähigkeit, etwas wie "Amerika / New York" zu erkennen. Ist das überhaupt mit JavaScript möglich oder muss ich das basierend auf dem Offset zu Gast haben?
javascript
timezone
Mike Thomsen
quelle
quelle
Antworten:
Die Internationalisierung API unterstützt immer die Benutzerzeitzone, und wird unterstützt in allen gängigen Browsern.
Beachten Sie, dass bei einigen älteren Browserversionen, die die Internationalisierungs-API unterstützen, die
timeZone
Eigenschaft aufundefined
die Zeitzonenzeichenfolge des Benutzers festgelegt ist. Soweit ich das beurteilen kann, geben zum Zeitpunkt des Schreibens (Juli 2017) alle aktuellen Browser mit Ausnahme von IE11 die Benutzerzeitzone als Zeichenfolge zurück.quelle
Die am besten bewertete Antwort ist wahrscheinlich der beste Weg, um die Zeitzone zu erhalten. Der
Intl.DateTimeFormat().resolvedOptions().timeZone
Name der IANA-Zeitzone wird jedoch per Definition in englischer Sprache zurückgegeben.Wenn Sie den Namen der Zeitzone in der Sprache des aktuellen Benutzers möchten, können Sie ihn wie folgt aus
Date
der Zeichenfolgendarstellung analysieren :Getestet in Chrome und Firefox.
Natürlich funktioniert dies in einigen Umgebungen nicht wie vorgesehen. Beispielsweise gibt node.js
GMT+07:00
anstelle eines Namens einen GMT-Offset (z. B. ) zurück. Aber ich denke, es ist immer noch als Fallback lesbar.PS Funktioniert nicht in IE11, genau wie die
Intl...
Lösung.quelle
Sie können dieses Skript verwenden. http://pellepim.bitbucket.org/jstz/
Fork oder Clone Repository hier. https://bitbucket.org/pellepim/jstimezonedetect
Sobald Sie das Skript eingefügt haben, können Sie die Liste der Zeitzonen in -
jstz.olson.timezones
variable abrufen .Der folgende Code wird verwendet, um die Zeitzone des Client-Browsers zu bestimmen.
Viel Spaß mit jstz!
quelle
Zeitzone mit Namen abrufen (dh "Amerika / New York")
quelle
Intl.DateTimeFormat().resolvedOptions().timeZone
Intl.DateTimeFormat().resolvedOptions().timeZone
gibt zurückundefined
, gibt aber denmoment.tz.guess()
korrekten Wert zurückSie können einfach Ihren eigenen Code schreiben, indem Sie die Zuordnungstabelle hier verwenden: http://www.timeanddate.com/time/zones/
Oder verwenden Sie die Moment-Zeitzonen-Bibliothek: http://momentjs.com/timezone/docs/
Sehen
zone.name; // America/Los_Angeles
oder diese Bibliothek: https://github.com/Canop/tzdetect.js
quelle
Dadurch wird der Zeitzonencode (z. B.
GMT
) in älterem Javascript abgerufen (ich verwende ein Google App-Skript mit alter Engine):Ich stelle das hier nur für den Fall, dass jemand es braucht.
quelle
UTC
/GMT
. Es sieht so aus, als wären andere buchstabiert; zB ,Pacific Daylight Time
.Versuchen Sie diesen Code von hier aus
quelle
In Javascript gibt die Date.getTimezoneOffset () -Methode den Zeitzonenversatz von UTC in Minuten für das aktuelle Gebietsschema zurück.
Moment'timezone wird ein nützliches Werkzeug sein. http://momentjs.com/timezone/
Daten zwischen Zeitzonen konvertieren
quelle