2016-09-01 2 views
1

Kann jemand bitte mein Verständnis auf Javascripts aktualisieren neues Datum ('') analysieren?Javascript Datum analysieren, warum

Zum Beispiel, warum ist dies:

var _date = new Date('2016-10-15'); 

gleich

_date = Fri Oct 14 2016 17:00:00 GMT-0700 (US Mountain Standard Time) {} 

und nicht gleich

Oct 15 2016 

Wenn Sie moment.js verwenden:

var _testdate = moment('2016-10-15').toDate(); 

_testdate = Sat Oct 15 2016 00:00:00 GMT-0700 (US Mountain Standard Time) {} 
+2

Die Datumszeichenfolge, die Sie übergeben haben, wird als ISO-UTC-Datum interpretiert, also sind es 7 Stunden vor Ihnen. Wenn Sie die Zeichenfolge zurückbekommen, geschieht dies in Ortszeit. – Pointy

+1

Wenn du früh aufstehst und deinen Code erneut ausprobierst, wird es funktionieren :) – Pointy

+0

Also, wie machst du es so, dass es nicht als UTC interpretiert wird und wie der moment.js zu handeln? Ich bin sehr relativistisch zu mir selbst. Ich weiß, deine Zeit ist nicht die gleiche wie meine Zeit vor allem nähert sich der Lichtgeschwindigkeit, aber ich interessiere mich nicht für dich: P – Watson

Antwort

3

Weil im Gegensatz zu ISO 8601 nur Datumsformulare wie '2016-10-15' vom Datumskonstruktor und Date.parse als UTC behandelt werden, während Bibliotheken wie moment.js mit ISO 8601 übereinstimmen und sie als lokal behandeln .

Da Ihr System auf UTC-0700 eingestellt ist, wird "2016-10-15" wie 2016-10-15T00: 00: 00Z (dh UTC + 0000) behandelt, was 2016-10-14 17: 00:00 in Ihrer lokalen Zeitzone.

+0

Und es gibt keine überschreibenden Funktionen oder Variablen, die Sie an das Date-Konstrukt übergeben können, um dieses Verhalten zu überschreiben? Ist es möglich, die Zeichenkette so zu gestalten, dass sie nicht nur eine Datumsform ist, sondern nur eine Datumsform? – Watson

+0

@ Watson - nein und ja. Ein Date-Objekt ist nur ein Zeitwert (ms aus der Epoche), sonst nichts. Das Parsen von erweiterten ISO 8601-Formatstrings ist in [* ECMA-262 *] (http://ecma-international.org/ecma-262/7.0/index.html#sec-date.parse) spezifiziert. Jede andere Analyse ist implementierungsabhängig, daher die ** starke ** Empfehlung, immer manuell zu analysieren. Wenn Sie eine Bibliothek verwenden, übergeben Sie das Format immer an Pars, überlassen Sie es niemals dem Zufall. – RobG

Verwandte Themen