Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript UTC与ISO时间格式_Javascript_Time_Utc_Iso_Iso8601 - Fatal编程技术网

Javascript 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

我试图理解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;博士
  • 始终使用格式:
    2019-11-14T00:55:31.820Z
  • 避免使用RFC 1123和822的传统格式:
    2019年11月14日星期四00:55:16 GMT
UTC和GMT是计时的,而不是格式 UTC和GMT不是格式

这是两种稍微不同的跟踪时间的方法。这是一个复杂的话题,如果你真的想知道的话,请查看维基百科页面了解血淋淋的细节

对于普通的商业应用程序,没有显著差异,几乎不到一秒钟的差异。大多数程序员可以互换使用这些术语。如果你为美国宇航局工作,或者为全球定位系统/伽利略导航项目工作,那么你会想了解更多

ISO 8601 第一个示例
2019-11-14T00:55:31.820Z
中的格式由标准定义

  • 中间的“代码> T <代码>将年月日部分与小时分秒部分分开。
  • 末尾的
    Z
    表示UTC,即与UTC的偏移量为零小时分秒。根据军事/航空传统,
    Z
    发音为“祖鲁”
ISO 8601标准更加现代化。这些格式被明智地设计为便于机器解析,也便于跨文化的人类阅读

将日期时间值序列化为文本时,始终选择ISO 8601

RFC 1123/RFC 822 您的第二个示例字符串
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中完成您的大部分思考、业务逻辑、数据存储、数据交换和登录。只有在业务规则要求时,以及在向用户显示值时,才可调整时区。

您是否在问这样做的目的?或者你在问JavaScript
Date
对象的
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点——这是非常不同的时刻,相隔几个小时。感谢您的澄清,现在已经清楚多了。