2016-07-13 15 views
0

Bitte verzeihen Sie meine Unwissenheit, aber könnte mir jemand vielleicht erklären, warum JavaScript Date(milliseconds) eine andere Zeitzone zurückgibt, wenn milliseconds kleiner ist als, sagen wir, 1e10?Warum gibt JavaScript Datum (Millisekunden) unterschiedliche Zeitzonen abhängig vom Wert des Arguments?

Hier ist ein minimales Beispiel von dem, was ich sehe:

JavaScript

console.log(new Date(1e3).toString()); 
console.log(new Date(1e10).toString()); 
console.log(new Date().toString()); 

Konsolenausgabe

Thu Jan 01 1970 01:00:01 GMT+0100 (W. Europe Daylight Time) 
Sun Apr 26 1970 19:46:40 GMT+0200 (W. Europe Standard Time) 
Wed Jul 13 2016 09:06:50 GMT+0200 (W. Europe Standard Time) 

Beachten Sie, dass die erste Ausgabe eine andere Zeitzone (GMT + 0100) hat aus die letzten zwei (GMT + 0200) ...

Es gibt wahrscheinlich eine gute Erklärung dafür, aber ich sehe es nicht.

Vielen Dank für Ihre Hilfe.

Mit freundlichen Grüßen, Dennis

Antwort

0

Was Sie sehen, hier ist keine Zeitzonenwechsel, aber die Sommerzeit (DST), die auf einer bestimmten Zeitzone.

Dokumentation des MDN Zitiert von Date.prototype.getTimezoneOffset():

Die Zeitzonen-Offset ist die Differenz in Minuten zwischen UTC und der Ortszeit. (...) Die Sommerzeit verhindert, dass dieser Wert auch für ein bestimmtes Gebietsschema eine Konstante ist.

+0

Danke für die schnelle Antwort. Ich denke, die Verwendung der UTC-Methoden von Date würde dieses Problem für meine Anwendung beheben. – Dennis

+0

@Dennis Ja, genau. DST wird nie auf UTC angewendet. – Arnauld