2013-03-07 3 views

Antwort

6

Die Einstellung zwischen Ortszeit und UTC-Zeit basiert auf einem Offset, der in Millisekunden angegeben wird.

http://es5.github.com/#x15.9.1.7 sagt

15.9.1.7 Lokale Zeitzone Adjustment

Eine Implementierung von ECMAScript wird erwartet, dass die lokale Zeitzoneneinstellung zu bestimmen. Die lokale Zeitzonenanpassung ist ein Wert LocalTZA , der in Millisekunden gemessen wird. Wenn er zu UTC hinzugefügt wird, entspricht dies der lokalen Standardzeit. Die Sommerzeit wird von LocalTZA nicht wiedergegeben. Der Wert LocalTZA variiert nicht mit der Zeit, sondern hängt nur vom geografischen Standort ab.

, wann dies ist nützlich, http://bugs.python.org/issue5288 erklärt ein API-Problem, das von der Annahme, dass Zeitzone Offsets entstand eine ganze Zahl von Minuten waren:

Die Olson-Zeitzone-Datenbank (von den meisten UNIX-Systemen und Mac OS X) verfügt über eine Anzahl von Zeitzonen mit historischen Offsets, die die zweite Auflösung verwenden (von vor diesen Standorten, die auf einen gerundeten Offset von GMT umgeschaltet wurden).

Sobald Sie auf die zweite Auflösung gehen, scheint keine getUTCMillis nur eine seltsame Asymmetrie zu haben.

+2

Lustig, dass der Offset als ** Millisekunden ** bis * angegeben ist * addiere ** zu UTC, aber die 'getTimezoneOffset'-Methode gibt einen Wert in ** Minuten ** zurück, der ** von UTC ** subtrahiert werden muss, um die lokale Zeit zu erhalten. Liebst du nicht gerade spec Autoren? – RobG

+0

Gerade erst ist klar geworden, wie schlecht verwirrende Zeiten und Zeitzonen sein können. – Matt

+1

@RobG, Ja, aber JavaScript hatte ein Date-Objekt, bevor es eine Spezifikation hatte :) –

0

weil es leap seconds gibt.

+0

JavaScript berücksichtigt Schaltsekunden nicht. Siehe die Definitionen von 'msFromTime' und' secFromTime' in der [Sprachspezifikation] (http://es5.github.com/#x15.9.1.10) –

Verwandte Themen