2010-02-26 2 views
9

Warum in aller Welt tut diesen Code:Javascript: Datum abhängig von der Feldspezifikationsreihenfolge? "Ja wirklich?"

var a = new Date();        
var b = new Date();  

a.setDate(31); 
a.setMonth(11); 
a.setFullYear(2009); 

b.setFullYear(2009); 
b.setMonth(11); 
b.setDate(31); 

ouputs richtig 31. Dezember 2009 für b und 3. Dezember 2009: -O für eine? Nicht im Browser MyHorribleScrap Version 6.6.6 sondern BEIDE auf FF 3.6 UND IE 8.06.6001

+0

Was in aller Welt ist MyHorribleScrap? –

Antwort

14

Deshalb wird empfohlen, den Date Konstruktor mit Argumenten zu verwenden.

Was geschieht, ist, wenn Sie das Date Objekt instanziiert, es das aktuelle Datum wird (heute, 26. Februar) und Februar hat nur 28 Tage, wenn Sie das Datum von setDate(31) gesetzt, springt er auf den 3. März

der empfohlene Weg:

var a = new Date(2009, 11, 31); 
// new Date(year, month, date [, hour, minute, second, millisecond ]); 
+0

+1 .. verdammt, du bist schnell ...: p –

+0

Nun, ich stimme zu, Februar ist ein böser Monat, aber ich war ein Datum im Dezember ... trotzdem, danke – Daniel

+0

Gute Antwort. Ich wollte nur hinzufügen "Date()" gibt das heutige Datum zurück, weshalb es momentan Februar ist. Wenn Sie dies im März getan hätten, wäre der Fehler nicht aufgetaucht. . . bis du zu einem kürzeren Monat gekommen bist. Huch. –

0

i wurde practicly Schreiben Tim's Antwort =/

sie zuerst das Jahr (da es sich um ein Schaltjahr sein könnte), dann den Monat und schließlich de Datum , aber die beste Praxis ist die Verwendung der Konstruktor Datum (Jahr, Monat, Datum) aber nicht immer so machen wollen.

+0

Wie ich Daniel gesagt habe, setze das Jahr, dann wird der Monat und dann das Datum nicht verhindern, dass in einigen Fällen Unstimmigkeiten auftreten, zB angenommen, heute ist der 31. Dezember 2009, und du willst das Datum auf den 1. Februar 2010 setzen ändere das Jahr, alles was Ok ist, hast du jetzt Dec 31 2010, jetzt änderst du den Monat, den du am 31. Februar 2010 hast, was bis zum 3. März endet, und du am Ende mit Mar 01 2010 – CMS

+0

hast du recht, der Konstrukteur ist der "sicherste" Weg. Auf alle Fälle. – gonxalo

Verwandte Themen