当创建一个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 中得到相同的结果。删除小时/分钟/秒没有任何效果。我可以通过在设置月份之前减一来解决这个问题,但我只是转而将日期写为字符串。
Edit:
字符串解析在 IE 中不起作用。我不知道我做了什么,但我发誓我做到了。那是问题。为什么我一开始就避免它。我现在已经改用 moment.js 。
啊,现在我明白了。就像常规的 java 日期一样,除非很少,否则我不会编写代码,即使如此,也总是使用库(joda 等)。无论如何,这是多么糟糕的主意啊。这是飞碟对这个问题的看法:为什么 Java 日历中的一月是 0?
为什么会发生这种情况?
程序员从0开始计数。所以月份用0(Jan)-11(Dec)表示。
天数不遵循此规则的原因是为了避免作者因 30/31 个月的差异而感到困惑。
来自MDN:
month
代表月份的整数值,从 0 开始表示一月到
12 月 11 日。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)