javascript – 用数字创建日期(新的日期(2012,03,…)给错误的月份(1)

前端之家收集整理的这篇文章主要介绍了javascript – 用数字创建日期(新的日期(2012,03,…)给错误的月份(1)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当使用零件的数字创建一个新的Date对象时,我得到的值比我在’month’中输入的值提前一个月.
new Date(2012,05,17,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,等等).无论如何,一个可怕的想法这是skeets的问题:Why is January month 0 in Java Calendar?

为什么会发生这种情况?

解决方法

程序员从0开始计数,所以月份由0(Jan)-11(Dec)表示.

天不遵守这一规则的原因是不要将作者与30/31个月的差异混淆.

From MDN:

month

Integer value representing the month,beginning with 0 for January to 11 for December.

猜你在找的JavaScript相关文章