为什么getDay返回错误的值?(JavaScript的)

Sve*_*nke 13 javascript datetime

我试着通过Javascript getDay()中的Date对象功能获得一周的一天.理论上它工作正常,但有时输出会有延迟,因此如果函数返回"4",则返回"1".

例如

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
Run Code Online (Sandbox Code Playgroud)

我真的不知道为什么会这样.这个例子来自IE8.FF 3表现相似,但返回不同的值.第一个是7,而不是4.第二个就像在IE8中一样.

任何想法为什么会这样?

Guf*_*ffa 19

因为月份数是零,而不是一个.

new Date("2009","04","30")Datemay的30日创建一个对象,而不是4月30日.

(它基于零的原因可能是历史性的,即它的行为与某种方法在不同系统中的运行方式相同...)

  • 同意,API的日期根本不一致.月份从0到11,天数从1到31,像getDay这样的方法返回0到6之间的数字,0表示星期日...... (3认同)
  • Bruce McKinney(Hardcore Visual Basic的作者)表示,在高级语言中强制执行基于零的数组是愚蠢的. (2认同)