javascript - Date.UTC() 未返回预期结果
问题描述
我正在尝试从一组值创建一个 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)"
有人可以解释这里发生了什么吗?
更新:
我应该澄清一下,我使用的是 MDN 声明的 API。问题是 Safari 没有最新的实现。这在另一个 SO 用户的帮助下得到了验证,幸运的是,他更新了文档。
第二个示例来自.toISOString()
零索引的误解,而它产生的时区偏移量为 0 的值,而不是月份是零索引的。
解决方案
示例 #1
您引用的行表明在 ES5 环境中需要年和月。如果您需要支持较旧的执行环境,您不能只过年。
但是,正如 TJ Crowder 在评论中指出的那样,此代码似乎有效。你用什么浏览器试试?
示例 #2
JavaScript 日期中的月份是 0 索引的。这意味着月份1
(或01
)是二月。
因此Date.UTC(2019, 01)
生成 UTC 2019 年 2 月 1 日午夜的时间戳,对应于 2019 年 1 月 31 日下午 6 点 CST。
还有一件事:您应该避免在 JavaScript 数字文字前面加上,0
因为这是表示八进制的语法。这意味着020 === 16
.
推荐阅读
- python - 读取用 Python Paramiko SFTPClient.open 方法打开的文件很慢
- python - PyMysql选择索引字段非常慢的地方
- c++ - Qt3D:关于 QText2DEntity 的几个简单问题
- sql - 使用置信度分数在 SQL 表中搜索重复项
- python - manim example_scenes.py 不会运行
- laravel - 如何删除相关值?
- python - 熊猫添加所有值为零的行
- excel - excel,两列的组合是一对一还是一对多
- json - 如何在golang中将http响应体解析为json格式?
- javascript - 锚标记多次附加到子 div