首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Date.UTC()不返回预期结果

Date.UTC()不返回预期结果
EN

Stack Overflow用户
提问于 2019-01-13 07:02:41
回答 1查看 50关注 0票数 0

我试图从一个值数组中创建一个UTC日期。文档指出,如果省略任何参数,则默认为0或1。

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Date.UTC(year, month[, day[, hour[, minute[, second[, millisecond]]]]])

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var tp = [2019]
var d  = new Date(Date.UTC.apply(null, tp))
console.log(d.toString())

结果: "Invalid Date"

示例2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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,而不是月份是零索引的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54170121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文