javascript - 为什么JS的日期会这样呢?

标签 javascript arrays date

我有一个名为 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/

相关文章:

javascript - 无法获取下一个 td 值

c# - 数组的反序列化不支持类型

java - 检查数组中的元素是否属于 Java 中的子类

mysql - MSSQL 到 MySQL - 读取十进制时为 "Invalid date literal detected"

php - 如何将水平表格转换为垂直表格?

javascript - margin 移动 : <ul> jitters when hover function initiated.

javascript - 为什么 document.querySelectorAll 返回一个 StaticNodeList 而不是一个真正的数组?

javascript - 如何添加适用于滚动的CSS动画效果仅适用于特定的div?

python - 将多个数组值更改为一个值

mysql - 比较 Grails 查询中日期的时间部分