日期:2014-05-16  浏览次数:20309 次

一个很奇怪的现象,关于Date
所有的书籍及文章都说到Date的构造函数中,月份的范围是0-11,0表示1月份,下面这段代码:

var d=new Date(2011,10,11);console.log(d.getFullYear() + "-" + d.getMonth()); 

本该是显示2011-11,但是在chrome及ie9中都显示

2011-10 

这是为什么?


------解决方案--------------------
2011-10 是代表11月 。

2011-0 是1月 。
------解决方案--------------------
可能是浏览器对于js有了新的解释吧,我这里ie6也是这样
------解决方案--------------------
getMonth获得的也是0~11的数据,有什么奇怪的?
------解决方案--------------------
var d=new Date("2011/11/11"); d.getMonth()应该是10;
------解决方案--------------------
因为 new Date(2011,10,11); 也是同样规则。10-11实际是11-11。

另外,你这个测试例子怎么这么傻,10和11正好差1,很容易把你自己搞晕。用2011,5,3差几个1的不就好点。
------解决方案--------------------
使用的格式有关系
你用 var d=new Date(2011,10,11);console.log(d.getFullYear() + "-" + d.getMonth()); 
会把你搞蒙 因为 10 ,11,只相差1
如果用你 var d=new Date(2011,5,11);console.log(d.getFullYear() + "-" + d.getMonth());
如果用你 var d=new Date(2011,11,5);console.log(d.getFullYear() + "-" + d.getMonth());
就可以知道问题出在哪儿?