为什么date.setMonth(10); date.setDate(20);给我12月20日而不是11月20日?

时间:2015-11-06 01:08:58

标签: javascript

以下Javascript代码

date = new Date();
date.setFullYear(2015);date.setMonth(10);date.setDate(20);
document.write(date);
document.write('<br/>');
date.setFullYear(2015);date.setDate(20);date.setMonth(10);
document.write(date);

给了我:

Sun Dec 20 2015 ...
Fri Nov 20 2015 ...

为什么选择date.setMonth(10); date.setDate(20);给我12月20日而不是11月20日?

&#13;
&#13;
date = new Date();
date.setFullYear(2015);date.setMonth(10);date.setDate(20);
document.write(date);
document.write('<br/>');
date.setFullYear(2015);date.setDate(20);date.setMonth(10);
document.write(date);
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

我说的结果发生在10月31日。因此,当浏览器执行setMonth(10)时,它会发现11月没有31天,并将月份设置为31天(12月)的下个月。

当您在一个月的第31天或在第30天设置了Monon(1)时设置了Monon(1),setMonth(3),setMonth(5),...时会出现相同的结果。

答案 1 :(得分:-1)

因为javascript有一个Date的愚蠢实现,日期为0-11而不是1-12,我们认为它们很自然。然而,setDate仍然是1-31 ... UGH !!!