2016-04-29 4 views
4

Ich verwende die moment-timezone v.0.5.3-2016c Bibliothek die UTC für eine Zeitzone Offset zu berechnen:Moment Zeitzone: UTC Offset Differenz

var z = moment().tz("America/Los_Angeles"); 
z.utcOffset(); // -420 mins or -7 hours 

// check if DST is shifted 
z.isDSTShifted(); // false 

Aber hier https://en.wikipedia.org/wiki/List_of_tz_database_time_zones die UTC für die America/Los_Angeles ist -8 Stunden versetzt.

Moment verwendet die tzdb v.2016c und die Wikipedia-Artikel zu.

Nun, warum gibt es hier zwei verschiedene Ergebnisse? Und welches Ergebnis ist richtig?

S.S .: Es gibt auch den gleichen Unterschied für America/Kentucky/Monticello und Europe/Tiraspol.

+1

'-7' ist zur Zeit die richtige Antwort (29. April 2016). Die Frage ist, warum die Moment '.ISDSTOffset()' Routine das nicht weiß. Ich denke, es hat etwas damit zu tun, wie Moment den Date-Wert in Besitz nimmt; Wenn es von einem nativen Date-Objekt stammt, kann es möglicherweise nicht erkennen. – Pointy

+1

[Siehe diesen Fehlerbericht.] (Https://github.com/moment/moment-timezone/issues/131) – Pointy

+1

[Auch diese ältere SO-Frage.] (Http://stackoverflow.com/questions/26063400/check -if-date-isdstshifted) – Pointy

Antwort

2

Das Aufrufen der Moment-Erstellungsfunktion moment() ohne Argumente gibt den aktuellen Zeitpunkt zurück. Da die Zeitzonen-Offsets je nach Datum und Uhrzeit variieren, variieren die Ergebnisse je nach Aufruf dieser Funktion. Wenn Sie wissen möchten, ob die Uhrzeit Sommerzeit ist oder nicht, verwenden Sie isDST. Die isDSTShifted Funktion ist für das Behandeln von ungültigen lokalen Zeiten, das Überprüfen von DST nicht. Es hätte wahrscheinlich besser genannt werden können.

2

Die USA befindet sich derzeit in Sommerzeit (DST). Daher würde ich die UTC DST Offset Spalte verwenden, die -07:00 zeigt.

+3

Die Frage ist, warum die Moment '.isDSTOffset()' -Funktion 'falsch' zurückgibt, wenn die Zeitzone in der Sommerzeit * eindeutig * ist. – Pointy

+0

Ah ... Entschuldigung. Ich habe falsch gelesen, was das Problem wirklich war. Es sieht dann so aus als wäre es ein Fehler. –