new Date() gesetzt, bis zum 31. Dezember 2014, sagt 1. Dezember statt

Ich versuche zu konvertieren einen string in ein Date-Objekt, und es funktioniert für alle Tage, außer für Dezember 31st, wo vom Objekt sagt 1. Dezember statt am 31. Ich habe keine Ahnung, warum. Hier ist mein JavaScript code:

var dt = new Date();
dt.setDate("31");
dt.setMonth("11");
dt.setFullYear("2014");

aber mein Wert der variable ist:

Mon Dec 01 2014 11:48:08 GMT+0100 (Paris, Madrid)

Wenn ich das gleiche tun für andere Datum, mein Objekt zurückgibt, um den entsprechenden Wert. Haben Sie eine Idee, was ich falsch gemacht habe?

  • Sie sind gedacht, um pass zahlen setMonth etc, keine Zeichenfolgen.
  • ganze zahlen scheinen zu produzieren, die den gleichen Wert.
  • Können Sie dies replizieren in einem plunkr?
  • ändern Sie die Reihenfolge der Einstellung der Werte!
  • Sie können die Date Konstruktor-Parameter direkt: new Date(2014, 11, 31)
  • btw. ist das nicht der 11ten Monat November?
  • Nein. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
  • Warum fordern Sie setXY auf eine variable mit der aktuellen datetime-eh? Wenn Sie ein neues datetime-Objekt verwenden, sollten Sie new Date(Date.UTC(2014, 11, 31))
  • HINWEIS: das Ergebnis in diesem Beispiel abweichen, je nach dem aktuellen Datum. Beispiel-code erzeugen wird, die RICHTIGEN Ergebnisse, wenn der aktuelle Monat ist der Januar, März, ..., Oktober, Dezember.
  • Es gibt nur 30 Tagen im November (Monat 11) und einen Tag nach vorne würde 1. Dezember. Vielleicht irgendwo auf der Linie der Zeit vermischt, denn die null-Indizierung für Monate?
  • Nein, das Datum ist Durcheinander, da der Monat jetzt 30 Tage hat.
  • C struct tm.tm_mon Feld repräsentiert den Monat als "Monate seit Januar", so die Nummerierung bei null, und wir alle Leben mit, dass die ursprüngliche Sünde seit.
  • ah, macht Sinn.

InformationsquelleAutor user2859409 | 2014-09-09
Schreibe einen Kommentar