我猜我只是混淆了参数,但我已经检查了100次。
如果我这样做:
console.log(new Date(2012, 12, 14, 0, 26, 15, 0));
我明白了:
Mon Jan 14 2013 00:26:15 GMT+0100 (CET)
但我期待的是:
Fri Dec 14 2012 00:26:15 GMT+0100 (CET)
为什么我得到这个结果?我认为Date-constructor的格式是year, month, day, hour, minute, second, millisecond
。
有人知道我在这里缺少什么吗?
答案 0 :(得分:5)
Javascript月号从0开始。 0 = 1月,11 = 12月。
所以你想要的是这个:
console.log(new Date(2012, 11, 14, 0, 26, 15, 0));
是的,这有点模糊。其背后的逻辑是:您通常希望显示月份名称,获取它们的逻辑方法是将名称存储为按月份编号索引的数组。数组索引从0开始。因此,月份数应该是0。
数十年的程序员烦恼和惊喜,因为有人不能被剔除1,或浪费13指针数组的元素,或其他什么。(这与工作日从0 =星期日到6 =星期六的数字背后的逻辑相同。这是因为它与ISO标准1 =星期一到7 =星期日是相同的模7。欧洲/美国日历惯例和基于1-vs-0的计数标准相互抵消......:))