Date(),Date.UTC()与范围运算符的奇怪行为

时间:2019-02-15 08:42:31

标签: javascript

我是在使用[...arr] / Date()构造函数使用范围运算符(Date.UTC())时做错了什么还是已知的错误?

让我感到困惑的是

x = [2015,5,1]; //(3) [2015, 5, 1]
new Date(2015, 5, 1); //Just as expected, Mon Jun 01 2015 00:00:00 GMT+0300 (Eastern European Summer Time)
new Date([...x]); //Fri May 01 2015 00:00:00 GMT+0300 (Eastern European Summer Time)
new Date(Date.UTC([...x])) //Invalid Date

p.s。我知道,后者是模棱两可的,因为带有多个参数的Date()已经返回UTC日期

2 个答案:

答案 0 :(得分:4)

Date.UTC参数不是数组。

删除数组:

x = [2015, 5, 1];
var d = new Date(Date.UTC(...x))
console.log(d)

答案 1 :(得分:2)

因为要传递相同的数组x作为参数。使用Rest parameters。因为Date.UTC不接受数组作为参数

  

UTC()采用逗号分隔的日期和时间参数

x = [2015,5,1]; //(3) [2015, 5, 1]
new Date(2015, 5, 1); //Just as expected, Mon Jun 01 2015 00:00:00 GMT+0300 (Eastern European Summer Time)

console.log(new Date(Date.UTC(...x)))