我有一个名为 dateArr 的数组,其中包含:[2014, 07, 10];
当我创建一个日期时,如下所示:
new Date(dateArr[0], Number(dateArr[1]), Number(dateArr[2]), 0, 0, 0);
它在控制台中的计算结果为“2014-08-09T23:00:00.000Z”。 我知道月份是从零开始的,但是为什么要纠正时间,我必须这样做:
new Date(dateArr[0], Number(dateArr[1]) - 1, Number(dateArr[2]), 1, 0, 0);
给出:2014-07-10T00:00:00.000Z
这对我来说似乎不对,有人可以解释一下吗?
最佳答案
new Date(2014, 6, 10, 0, 0, 0)
使用您当前的时区(您的时区为 +0100,例如,我在莫斯科的时区为 +0400)。因此,它的结果将取决于您运行代码的时区。
> new Date(2014, 6, 10)
Thu Jul 10 2014 00:00:00 GMT+0400 (MSK)
> new Date(2014, 6, 10).toISOString()
'2014-07-09T20:00:00.000Z'
如果您确实想要“ISO 时间”中的午夜,您可以使用带字符串的构造函数:
> new Date('2014-06-10Z').toISOString()
'2014-06-10T00:00:00.000Z'
关于javascript - 为什么JS的日期会这样呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24674748/