javascript - “Z”之前的值在 ISO8601 日期字符串中表示什么?
问题描述
我正在尝试了解ISO8601 时间格式
这个值是什么意思?
2019-11-14T00:55:31.820Z
我是这样理解的
2019-11-14 // November 14th, 2019
T00:55:31 // 12:55 AM in GMT time (London)
.820 // why is this needed or specified?
Z // The "Z" indicates to store this as GMT time (London)
我不明白为什么.820
这里需要。读到它,这是指时区820,即加利福尼亚。
如果我去 Javascript 控制台并在有和没有那个 820 值的情况下编写这个,我会得到相同的结果,基于我的语言环境(EST 时区)
new Date('2019-11-14T00:55:31.820Z') // Wed Nov 13 2019 19:55:31 GMT-0500 (Eastern Standard Time)
new Date('2019-11-14T00:55:31Z') // Wed Nov 13 2019 19:55:31 GMT-0500 (Eastern Standard Time)
实际作用之前的前缀值Z
是什么?
解决方案
“Z”表示将此存储为 GMT 时间(伦敦)
不,它表示显示的时间值是UTC,而不是你应该将它存储在 GMT/UTC 中。它告诉您解释所提供信息的时区。
我不明白为什么这里需要 .820。读到它,这是指时区 820,即加利福尼亚。
那是毫秒,而不是时区。进入 820 毫秒00:55:31
(例如,距离 180毫秒00:55:32
)。
如果我去 Javascript 控制台并在有和没有那个 820 值的情况下编写这个,我会得到相同的结果,基于我的语言环境(EST 时区)
只是因为您引用的任何控制台的输出都不包括毫秒。如果您检查实际日期,您会发现它们相隔 820 毫秒:
const dt1 = new Date('2019-11-14T00:55:31.820Z');
const dt2 = new Date('2019-11-14T00:55:31Z');
console.log(dt1.valueOf() - dt2.valueOf()); // 820
(实例的基本值Date
是自 1970 年 1 月 1 日午夜 UTC 以来它所代表的毫秒数。因此,如果我们从 [which does] 中减去d2
[which doesn't have the .820
] d1
,我们会看到它们相隔 820ms。)
推荐阅读
- unity3d - NavMesh 代理在前往目的地之前振荡
- java - 如何修复从设置活动到主要活动的移动?
- excel - 使用宏将粘贴复制到不同位置
- python - 在 Python 中对元素进行分组的 list 方法
- angular - 具有嵌套承诺和可观察的角度解析
- c# - Windows中tabcontrol的奇怪行为,所有选项卡出现两次
- node.js - 有没有办法从 node.js 服务器中的 node-red 服务器接收图片?
- android - Android - 如何以编程方式了解带有感叹号的 Wi-Fi 图标状态
- sql - 如何修复 Spark-SQL 中的“引用外部查询的表达式...”错误?
- javascript - React - 不变违规:缩小 React 错误 #130。仅在生产中