当使用零件的数字创建一个新的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个月的差异混淆.
month
Integer value representing the month,beginning with 0 for January to 11 for December.