Javascript UTC与ISO时间格式
我试图理解UTC和ISO格式之间的区别,以及在服务器之间传输消息时何时使用什么格式。所以当我尝试下面的方法时,我得到的就是Javascript UTC与ISO时间格式,javascript,time,utc,iso,iso8601,Javascript,Time,Utc,Iso,Iso8601,我试图理解UTC和ISO格式之间的区别,以及在服务器之间传输消息时何时使用什么格式。所以当我尝试下面的方法时,我得到的就是 new Date().toISOString() "2019-11-14T00:55:31.820Z" new Date().toUTCString() "Thu, 14 Nov 2019 00:55:16 GMT" 我了解ISO格式及其用于表示时间的标准,但UTC的用途是什么,我在哪里使用它们?tl;博士 始终使用格式:201
new Date().toISOString()
"2019-11-14T00:55:31.820Z"
new Date().toUTCString()
"Thu, 14 Nov 2019 00:55:16 GMT"
我了解ISO格式及其用于表示时间的标准,但UTC的用途是什么,我在哪里使用它们?tl;博士
- 始终使用格式:
2019-11-14T00:55:31.820Z
- 避免使用RFC 1123和822的传统格式:
2019年11月14日星期四00:55:16 GMT
2019-11-14T00:55:31.820Z
中的格式由标准定义
- 中间的“代码> T <代码>将年月日部分与小时分秒部分分开。
- 末尾的
表示UTC,即与UTC的偏移量为零小时分秒。根据军事/航空传统,Z
发音为“祖鲁”Z
Thu,2019年11月14日00:55:16 GMT
在旧标准中定义
这些是格式。它们很可怕,很难用机器解析。它们对人类有害,因为它们假定英语和特定的文化规范
尽可能避免使用此格式。仅当旧协议和系统需要时才使用此选项,而ISO 8601尚未更新
时区
您的示例2019-11-14T00:55:31.820Z
表示与UTC的偏移为零小时分秒。这是站在屏幕上显示的时钟前看到的一天中的时间和日期
()
突尼斯挂在墙上的时钟上的同一时刻显示一小时后:2019-11-14T01:55:31.820+01:00
[非洲/突尼斯]。正如+01:00
所指出的那样,突尼斯非洲/Tunis
的时区在当时比UTC提前一小时
魁北克墙上挂着的时钟上显示的这一时刻与前一天晚上近8点相同:2019-11-13T19:55:31.820-05:00
[美国/蒙特利尔]。魁北克美洲/蒙特利尔的时区当时比UTC晚五个小时,如-05:00
所述
您可以看到这些计算是通过运行Java代码(而不是问题上标记的JavaScript)进行的
通常,最好在UTC中完成您的大部分思考、业务逻辑、数据存储、数据交换和登录。只有在业务规则要求时,以及在向用户显示值时,才可调整时区。您是否在问这样做的目的?或者你在问JavaScriptDate
对象的ToutString
函数的用途是什么?如果你想用一种特别难看、不区分区域设置的方式向人显示日期,你可以使用toISOString与另一台机器和ToutString共享日期。非常感谢你的反馈。以第一个例子为例,2019-11-14T00:55:31.820Z
我如何知道这属于哪个时区?它是820Z
值吗?正如我在回答中提到的,末尾的Z
表示UTC(零偏移量),发音为“Zulu”。所以不是时区,只是UTC的一个偏移量。时区有名称大陆/地区
,是特定地区人民使用的偏移量的过去、现在和未来变化的历史。好的,我现在有点困惑,当你说UTC(零偏移量)时,这与ISO格式有什么关系?@tmpdev你知道格式与文本、字符串有关吗?“ISO”和“UTC”不是格式。2019-11-14T00:55:31.820Z
末尾的Z
表示子午线时,从伦敦格林威治皇家天文台外的官方时钟(以及冰岛所有使用UTC作为时区的时钟上看到的时间)开始,午夜后55分钟的时间。如果没有Z
,我们将不知道这是否意味着日本东京、法国巴黎或美国俄亥俄州托莱多的凌晨1点——这是非常不同的时刻,相隔几个小时。感谢您的澄清,现在已经清楚多了。