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