2009-05-07 6 views
10

私はJavaScriptでDateオブジェクトのgetDay()機能と曜日を取得しようとしました。 理論的にはうまくいきますが、出力に遅延があることがあるため、関数が "4"を返す必要がある場合は "1"を返します。getDayが間違った値を返すのはなぜですか? (ジャバスクリプト)

など。

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は同様の動作をしますが、異なる値を返します。最初の1つは4ではなく7です。もう1つはIE8のようです。

これはなぜ起こりますか?

答えて

16

月の数値はゼロベースなので、ベースにはなりません。

new Date("2009","04","30")よいの30年4月のない30のためDateオブジェクトを作成します。

(それが戻って時間内に別のシステムのように、いくつかの方法と同じように振る舞う。すなわち、それはゼロベースだ理由は、おそらく歴史のある...)

+0

私は理由が何であるかを気にしない、そうではありません十分に良い。ゼロベースの月はSTUPIDです。しかし、私たちはそれらについています。一息.... – RolandTumble

+1

まあ、すべての言語ではありません... .NETのDateTime(int、int、int)コンストラクタは1つの月の番号を使用します。 – Guffa

+1

ありがとう、私はこのちょっとばかなことのためにJavascriptが嫌い... -.- – SvenFinke

関連する問題