我试图从一个值数组中创建一个UTC日期。文档指出,如果省略任何参数,则默认为0或1。
语法:
Date.UTC(year, month[, day[, hour[, minute[, second[, millisecond]]]]])
示例:
var tp = [2019]
var d = new Date(Date.UTC.apply(null, tp))
console.log(d.toString())
结果: "Invalid Date"
示例2:
var tp = [2019, 01]
结果: "Thu Jan 31 2019 18:00:00 GMT-0600 (CST)"
预期: "Thu Jan 1 2019 00:00:00 GMT-0600 (CST)"
有人能解释一下这里发生了什么吗?
更新:
我应该澄清一下,我正在使用API作为MDN状态。问题是Safari没有最新的实现。这在另一个SO用户的帮助下得到了验证,后者幸运地更新了文档。
第二个例子来自一个误解,即.toISOString()
是零索引的,而它产生的值的时区偏移值为0,而不是月份是零索引的。
发布于 2019-01-13 07:08:11
示例1
您引用的行表示在ES5-环境中需要年份和月份。如果您需要支持旧的执行环境,您就不能仅仅度过一年。
然而,正如T.J.Crowder在注释中指出的那样,这段代码似乎有效。你在试用什么浏览器?
例2
JavaScript日期中的月份是0索引的。这意味着1
(或01
)月份是2月。
所以Date.UTC(2019, 01)
产生了2019年2月1日午夜的时间戳,它对应于2019年1月31日下午6点。
还有一件事:,您应该避免在JavaScript数字文本之前使用0
,因为这是表示八进制的语法。这意味着020 === 16
。
https://stackoverflow.com/questions/54170121
复制相似问题