2016-05-13 12 views
0

Javascript Datum int Wert falsch ist

var vdate= new Date(parseInt("1438405200000")); 
 
var vmonth = vdate.getMonth() + 1; 
 
alert(vmonth);

Wenn ich eine Datumsvariable in JavaScript von int Wert erstelle ich eine falschen Monat bekommen, Im Beispiel das Datum (1438405200000) ist 2015.08.01

Alarm zeigt 7, die richtige ist 8, dies tritt nur in einigen PC.Kann regionale Einstellung oder so etwas sein?

+1

Monate sind null indiziert. –

+0

Verwenden Sie 'parseInt (" 1438405200000 ", 10)' –

+1

Mögliches Duplikat von [Javascript-Datum gibt einen falschen Monat zurück, wenn der Tag 01 ist] (http://stackoverflow.com/questions/25288781/javascript-date-returns-wrong-month- Wenn-Tag-ist-01) –

Antwort

0

Der Grund dafür ist, dass Monate 0-11 sind, nicht 1-12. (Denken Sie daran, als Elemente in einem Array. var months = ["January", "February", "March"...])

MDN Docs on Date.prototype.getMonth()

Darüber hinaus erhalten Sie in einer Zeitzone mehr als 5 Stunden hinter GMT wahrscheinlich sind. (Da dieser Zeitstempel speziell mit 05:00:00 am 1. August 2015 übereinstimmt) wird das JavaScript-Objekt date versuchen, Zeiten auf Ihre aktuelle Zeitzone zu lokalisieren. (In meinem Fall GMT-7) Also, getMonth() für mich verwenden, wird 6 anstatt 7 zurückgeben. Wenn Lokalisierung das gewünschte Verhalten ist, dann ist das in Ordnung. Andernfalls, wenn es sich um eine UTC-Zeit handelt und Sie die spezifische UTC-Darstellung abrufen möchten, sollten Sie stattdessen getUTCMonth() aufrufen oder den Zeitzonen-Offset anderweitig kompensieren.

+0

getUTCMonth() ist die Lösung, die Website hat Benutzer aus verschiedenen Zeitzonen – DanielVorph