2014-01-25 9 views
18

Ich muss eine < wählen > Liste aller tatsächlichen Weltzeitzonen. Wie bekomme ich ein Array mit Zeitzonenliste?Wie bekomme ich Zeitzonen Liste mit moment.js Bibliothek?

+1

einen Blick auf http: // Momentjs.com/timezone/data/ –

+0

Nun, soweit ich das verstehen kann, wird die Zoneliste in private zoneSets Variable gespeichert und es gibt keine Möglichkeit, die Zeitzonenliste zu bekommen. Ist das richtig? Und ich sehe den Zonelistenerzeuger, aber was ist, wenn sich die Zonen durch Regierungen ändern? Ich würde bevorzugen, dass die tzdata zusammen mit dem npm-Paket aktualisiert werden. Aber trotzdem, danke. – user619271

Antwort

5

Für die Zeitzone sollten Sie die von Ihnen erstellte Zeitzonen-JS-Datei manuell hinzufügen.

In diesem page können Sie die Zonen auswählen und eine Datei erstellen, die geladen werden soll, nachdem Sie zuerst moment.js geladen haben.

Sie sollten etwas davon haben, werfen Sie einen Blick:

<script src="/javascripts/modules/moment/moment-with-langs.min.js"></script> 
<script src="/javascripts/modules/moment/moment-timezone.min.js"></script> 
<script src="/javascripts/modules/moment/moment-timezone-data.js"></script> 

Der JS moment-timezone-data.js ist die benutzerdefinierte Liste der Zeitzonen.

Allerdings weiß ich MomentJS nicht zurück für Sie eine Liste aller Zeitzonen, weil Zeitzone kann auch geändert werden. Wenn Sie ein select-Tag ausfüllen müssen, empfehle ich Ihnen, die Zeitzonenliste manuell über den obigen Link zu analysieren.

+3

Der in der Antwort erwähnte Link sagt "kommt bald". Gibt es einen neuen Link? Ref [link] (http://momentjs.com/timezone/data/) – obai

+0

Was bedeutet * Zeitzone kann geändert werden * bedeuten? –

+1

Dies hat sich mit den letzten Versionen geändert. Siehe unten für korrekte Antworten. – theshadowmonkey

28

Zunächst sind moment-timezone mit Daten und dann können Sie verwenden moment.tz.names();

+0

Funktioniert nicht für mich :-(Ich benutze Version 2.1.0, es sieht aus wie Momente.tz ist undefined. Irgendwelche Idee? – user2783091

+2

"Um Moment-Zeitzone zu verwenden, brauchen Sie [email protected]+, moment-timezone.js und die moment-timezone Daten. "http://momentjs.com/timezone/docs/#/using-timezones/ – marcieng

+2

moment.tz.names() zeigt nur aktuell geladene Zeitzonen, nicht alle – btk

13
+1

Dies zeigt nur a Liste der geladenen Zeitzonen, und um Zeitzonen zu laden muss man ihre Namen wissen, also ist es ein wunderbares kleines Catch-22 – btk

+1

Das scheint nicht mehr wahr zu sein - die Dokumente unter diesem Link sagen "Um eine Liste aller verfügbaren Zeitzonennamen zu bekommen , verwenden Sie moment.tz.names. " – rmcsharry

4

Es gibt 378 Zeitzonen. Eine Zeitzone ist eine beliebige Kombination von Regeln über die Zeit, einschließlich DST, die für einen beliebigen Zeitraum an jedem Ort gültig war, egal wie winzig - wie eine einzelne Stadt in Indiana, die sich entschieden hat, die Sommerzeit für zwei zu verlängern Jahre in den 1940er Jahren. Oder, um ein jüngeres Beispiel zu nehmen, die nordkoreanische Zeitzone, die gerade um 30 Minuten aufgestockt wurde. Oder ein Dutzend Zeitzonen nur für die Antarktis.

Ich bezweifle, wenn Sie alle diese Zeitzonen in Ihrem Pulldown zeigen möchten. Sie müssen die gängigsten 50-100 oder so wählen. Sie können dies entweder selbst tun, oder Sie können die Liste von einer Website wie Google kopieren. Wahrscheinlich möchten Sie mindestens eine Zeitzone von jedem der 24 Offsets wählen, so dass sie, egal wo sie sich befinden, eine solche finden können.

+0

Während diese Antwort informativ ist, adressiert sie nicht die Fragen, die für die Benutzung der moment.js-Bibliothek gestellt werden. – daveD

3

Beachten Sie, dass moment.js standardmäßig nicht mit moment-timezone.js ausgeliefert wird, Sie müssen es bekommen.

bower install moment-timezone --save 
npm install moment-timezone --save 
Install-Package Moment.Timezone.js 

Oder Downlaod

Dann können Sie eine Reihe von Zeitzonen auf diese Weise erfordern:

var timezones = moment.tz.names(); 

Ein weiterer nützlicher Trick ist, dass man (erraten), um den aktuellen Benutzer Zeitzone einstellen, Sie müssen also den Benutzer nicht dazu bringen, in einer riesigen Liste nach seiner Zeitzone zu suchen, oder Sie können standardmäßig eine Zeitzone festlegen und ihn dann vom Benutzer ändern lassen, wenn er sie benötigt.

var currentUserTimezone = moment.tz.guess(); 

Auch können Sie Abkürzung von Zeitzonen, wenn Sie sie benötigen, im Fall müssen Sie bieten und Array von Abkürzungen von Zeitzonen:

moment.tz('America/Los_Angeles').format('z') //PDT 

moment-timezone.js full documentation

+0

raten-Funktion hat mir geholfen – Gagan

Verwandte Themen