2009-05-07 16 views
10

Ich habe versucht, den Tag einer Woche mit der getDay() Funktion des Date Objekts in Javascript zu bekommen. In der Theorie funktioniert es gut, aber manchmal gibt es eine Verzögerung in der Ausgabe, also wenn die Funktion eine "4" zurückgeben sollte, gibt es eine "1" zurück.Warum gibt getDay falsche Werte zurück? (Javascript)

z.

var date= new Date("2009","04","30"); 
alert(date.getDay()); // the function returns 6, should return 4 

var date= new Date("2009","05","01"); 
alert(date.getDay()); // the function returns 1, should return 5 

Ich weiß wirklich nicht, warum das passiert. Dieses Beispiel stammt von IE8. FF 3 verhält sich ähnlich, gibt aber andere Werte zurück. Der erste ist 7, nicht 4. Der zweite ist wie in IE8.

Irgendwelche Ideen, warum das passiert?

Antwort

16

Da die Monatszahl Null basiert, nicht eine basiert.

new Date("2009","04","30") schafft ein Date Objekt für den 30. kann, nicht der 30. April.

(Der Grund, warum es ist null basiert ist wahrscheinlich historisch, dh es ist die gleiche wie einige Verfahren in einem anderen System zurück in der Zeit ... verhält)

+0

ist mir egal, was der Grund ist, es ist nicht gut genug. Zero-basierte Monate sind DUMM. Aber wir sind mit ihnen fest ... seufz .... – RolandTumble

+1

Nun, nicht alle Sprachen ... Der DateTime (int, int, int) -Konstruktor in .NET verwendet eine einzige Monatsnummer. – Guffa

+1

Vielen Dank, ich hasse Javascript für diese ein bisschen dumme Dinge ... -.- – SvenFinke

Verwandte Themen