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



当使用数字创建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 中不起作用。 我不知道我做了什么,但我发誓我做到了。 这就是为什么我一开始就避免它的原因。 我现在已改用时刻.js。

啊,现在我明白了。 就像常规的java日期一样,除了很少,我不会编码,即使这样也总是使用库(joda等(。 反正真是个可怕的主意。 这是双向飞碟对这个问题的看法:为什么 Java 日历中的一月是 0?

为什么会这样?

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

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

来自 MDN:

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

相关内容

最新更新