用数字创建日期(新日期(2012年,03年,...)给出错误的月份(+1)

时间:2012-05-18 08:10:39

标签: javascript

使用部件的数字创建new Date对象时,我获得的值在我为'月'输入的值之前正好一个月

new Date(2012, 05, 17, 00, 00, 00)
Sun Jun 17 2012 00:00:00 GMT+0800 (HKT)  // june?!

但是,完全相同字符串的正常解析会返回正确的时间:

new Date("2012-05-17 00:00:00")
Thu May 17 2012 00:00:00 GMT+0800 (HKT)

我在ie / ff / chrome中得到了相同的结果。删除小时/分钟/秒没有任何效果。我可以通过在设置月份之前减去一个来解决它,但我只是改为将日期写为字符串。

修改 字符串解析在IE中不起作用。我不知道我做了什么,但我发誓我做了那件事。多数民众赞成。为什么我首先避免它。我现在转而使用moment.js。

啊,现在我明白了。就像普通的java日期一样,我很少编写代码,但很少,甚至总是带有库(joda等)。无论如何,这是多么可怕的想法。这是问候小组:Why is January month 0 in Java Calendar?

为什么会这样?

1 个答案:

答案 0 :(得分:16)

程序员从0开始计数。所以月份由0(1月)-11(12月)表示。

日子不遵守此规则的原因是不要将作者与30/31个月的差异混淆。

<强> From MDN:

  

     

表示月份的整数值,从1开始为0   12月11日。