2012-11-22 3 views
12

Gibt es eine Javascript-Bibliothek, die Zeitzonenumwandlungen (und berücksichtigt DST-Regeln und solche Sachen berücksichtigt)? Ich weiß, dass es ähnliche Fragen gibt, aber keine von denen, die ich gesehen habe, scheint eine Antwort zu haben, die wirklich zu meiner Frage passt.JavaScript-Bibliothek, die Zeitzonenumwandlung verarbeitet

Ich möchte ein Datum in Zeitzone A erstellen und in der Lage sein, es zu manipulieren (Tage, Stunden und solche Sachen hinzufügen) und es dann in eine andere Zeitzone B umzuwandeln. Es muss eine Menge Leute geben, die brauchen diese Art von Funktionalität, also denke ich, dass es da draußen eine Bibliothek geben sollte, die ich nicht gefunden habe.

+0

Ist es das? Ich stimme zu, dass wenn ich wüsste, dass das Date-Objekt sich in einer bestimmten Zeitzone befindet, sollte dies ausreichen, um zwischen den Zeitzonen konvertieren zu können. Aber mir ist keine Möglichkeit bekannt, dies zu tun. – Nocklas

Antwort

8

Ich glaube, Sie dies wünschen:

https://github.com/mde/timezone-js

Der Parser ein bisschen ein zwicken braucht zu bekommen, ohne die andere Bibliothek der Person zusammen zu laufen (zumindest im letzten habe ich es .. fünf Monaten?), aber ansonsten scheint das eine solide Bibliothek zu sein. Ich habe es auf zwei sehr zeitzonensensitiven, stark frequentierten kommerziellen Websites mit großem Erfolg verwendet.

Es spielt manchmal nicht gut mit jquery date picker und momentjs (und wahrscheinlich anderen Bibliotheken), also seien Sie bereit, entweder diese Bibliotheken zu optimieren, ZeitzoneJS Datum zu verwenden, oder haben Sie eine/von Konvertierung Funktion, so dass Sie kann ein timezonejs-Datum in ein "normales" Datum und umgekehrt für Eingabe/Ausgabe umwandeln.

Sonst, als ein Beispielfall, wird dies ein Zeitzone Datum Asien/Singapur nehmen und es in ein Amerika/Los_Angeles Datum unter Berücksichtigung der Sommerzeit für dieses Jahr. Es verwendet Olson-Zeitzonendateien, die frei verfügbar sind, und analysiert sie in etwas, das tatsächlich sehr genau ist.

Hoffentlich bringt Sie das auf den richtigen Weg.

--Edit--

vergessen - ein paar Tipps, es zu benutzen. Wenn Sie eine begrenzte Anzahl von Zeitzonen haben, empfehle ich dringend, diese herauszureißen, indem Sie dem Parser sagen, dass er nur diese verwenden soll - dann müssen Sie keine große Datei von allen laden. Außerdem wurde ich einmal getreten, weil setHours, setMinutes usw. nicht der JS "spec" von setHours (0, 0, 0, 0) folgen (also Stunden, Minuten, Sekunden, Millis). Es ist eine Erweiterung Anfrage hier: https://github.com/mde/timezone-js/issues/48 Ich glaube nicht, dass es überhaupt schwierig sein wird, für die Code-Änderung, dass zu unterstützen, so dass ich hoffe, wir werden sehen, es fusionierte früher als später .. oder ich kann es mir einfach machen ;)

+0

Diese Bibliothek sieht so aus, als würde es den Trick für mich tun. – Nocklas

-3

Sie können zu diesem Beitrag einen Blick: How to get user timezone using jquery?

Es scheint, dass Sie Zeitzonen keine Bibliothek müssen konvertieren.

- EDIT (für Menschen, die zu LEASY sind andere Frage die Antworten auf Stackoverflow zu lesen)

Sie können die standard Date object auf diese Weise verwenden:

var offset = (new Date).getTimezoneOffset()/60 

Und für diejenigen, die zu LEASY- lesen Spezifikationen ...

Dies gibt Ihnen die Stunde nach Weltzeit: var hour = (new Date).getUTCHours() Und das wird Ihnen die Stunde nach der Ortszeit geben: var hour = (new Date).getHours()

Jetzt verstanden?

+0

Ich sehe nicht, wie dieser Beitrag mein Problem löst. Wenn du es tust, bitte erleuchte mich. – Nocklas

+0

Es scheint, dass Sie ein Datum manipulieren können, sogar mit Zeitzonenunterstützung nur mit dem "Date" -Objekt. haben Sie einen Blick auf diese: http://www.w3schools.com/jsref/jsref_obj_date.asp –

+0

Zeitzonen (z America/Los_Angeles) in Kalender- Anwendungen eingesetzt werden, weil die Ereignisse in Ortszeit geplant sind. Unabhängig von der Zeitzonenverschiebung an diesem Tag (Änderung der Regeln für die Sommerzeit usw.) muss die lokale Uhrzeit, zu der das Ereignis stattfindet, gleich bleiben. Für diese Anwendungen müssen wir oft die Zeitzone + Ortszeit in die Universalzeit und umgekehrt umwandeln. –

10

MOMENT - Eine 5kb javascript date library zum Parsen, Validieren, Manipulieren und Formatieren von Daten.

moment(). Zone(); Das ist die Funktion, die du haben willst.

Sie können auch ausprobieren datejs, aber ich bevorzuge Moment-Bibliothek, sie haben gute Dokumente und unterhält köstlichen Code.

+1

ich etwas falsch zu machen müssen, ich habe Moment wie dieser 'enthalten <= script type 'text/javascript' src = "http://momentjs.com/downloads/moment-timezone.js">' ich jedoch bekomme einen Fehler: ** Uncaught ReferenceError: Moment ist nicht definiert ** –

+0

@NaguibIhab, Schau dir die Dokumentation für Moment Timezone an. Sie listen auf, welche '.js' Dateien Sie benötigen. –

+0

Ich sehe das weit über 5 KB, wenn Sie alle erforderlichen Dateien einschließen. –

4

Moment hat jetzt eine eigene librabry: moment-timezone. Sie können Ihre eigenen tzdata mit online timezone data builder erstellen.

Wie Moment seiner Zeitzone Gegenstück ist leicht und seine API gut gestaltet.

+0

'moment-timezone.js' benötigt' moment.js' und Zeitzonendaten. Die Dokumentation für Moment Timezone listet die benötigten '.js' Dateien auf. –

Verwandte Themen