2009-05-07 40 views
10

我試圖在Javascript中使用Date對象的getDay()函數獲得一週的一天。 理論上它工作正常,但有時輸出會有延遲,所以如果函數返回一個「4」,它將返回一個「1」。爲什麼getDay返回不正確的值? (javascript)

E.g.

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 

我真的不知道爲什麼會這樣。這個例子來自IE8。 FF 3的行爲類似,但返回不同的值。第一個是7,而不是4.第二個就像在IE8中一樣。

任何想法,爲什麼會發生這種情況?

回答

16

因爲月份編號是從零開始的,不是一個基於的。

new Date("2009","04","30")創建的 30日,月的不第30一個Date對象。

(在爲什麼它是從零開始的原因可能是歷史性的,即它的行爲等同於不同的系統,早在某個時間的方法...)

+0

我不在乎是什麼原因,它不是夠好了。基於零的月份是STUPID。但是,我們堅持與他們......嘆了口氣.... – RolandTumble 2009-05-07 16:13:34

+1

嗯,並非所有的語言... .NET中的DateTime(int,int,int)構造函數使用基於一個月的數字。 – Guffa 2009-05-07 19:01:09

+1

非常感謝,我討厭Javascript這種有點愚蠢的東西...... -.- – SvenFinke 2009-05-11 08:30:25

相關問題