与ISO 8601相比,ECMAScript 5日期格式简化了什么

ECMAScript根据ISO 8601扩展格式的简化定义了日期时间的字符串交换格式。 格式如下:YYYY-MM-DDTHH:mm:ss.sssZ
- https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15

那么这两种格式之间究竟有什么区别呢? 我必须注意些什么? 我注意到ISO 8601指出T可以用空格代替。 还有什么是“简化”?

非常具体:这个问题是关于标准。 浏览器行为很有趣,但不是这个问题的主要焦点。


ISO 8601为日期和时间定义了许多不同的格式,例如:

  • 扩展(与ECMA相同): YYYY-MM-DDTHH:mm:ss.sssZ
  • 基本(与上面相同,但没有-:分隔符): YYYYMMDDTHHmmss.sssZ
  • 还有变化:只是日期,只是时间和有无偏移量。 如果日期使用上述(基本或扩展)之一,则时间必须相同。

    并且它还允许其他格式的日期(ECMA不使用):

  • “不完整”日期:
  • 只有年份: YYYY ,或者在数字前带有+-信号的扩展版本
  • 只是年和月: YYYY-MM
  • 只是月和日:-- --MM-DD
  • 周日期: YYYY-WwwYYYY-Www-DWww星期编号 (大写字母W后跟2位数字),但本例中的YYYY是ISO星期编号年 - 引用wikipedia:
  • ISO星期编号年从01周的第一天(星期一)开始,到新ISO年之前的星期日结束(因此没有重叠或缺口)。 它由52周或53周组成。 一年中的第一个ISO周最多可能有三天,实际上是在公历结束的一年; 如果三个,他们是星期五,星期六和星期天。 同样,一年的最后一个ISO周最多可能有三天,实际上是公历开始的一年; 如果三个,他们是星期一,星期二和星期三。 每个ISO星期的星期四总是在由ISO星期编号年表示的公历年。

  • 序号日期: YYYY-DDD年份一年中的 某一天 )。
    例如: 2017-02-012017-032相同( 2月1 日是每年第32天 )。
  • 上面的星期有序格式也可以使用一段时间。
    例如: 2017-02-01T10:002017-032T10:00都是有效的(和等效的)。

    ECMA通过仅允许YYYY-MM-DDTHH:mm:ss.sssZ简化它。 它也允许延长的年份(6位数字和一个信号),但保持其他字段的相同格式。


    ISO 8601还定义了另一个概念(持续时间和时间间隔)。 尽管它们都与日期和时间有关,但它们并不是一回事:持续时间是“时间量”(如“2天,4小时和5分钟”),间隔是“介入时间两个时间点“(开始和结束日期)。


    ISO 8601是一整套时间和日期格式的标准,包括:

  • 日期
  • 时间
  • 协调世界时(UTC)
  • 本地时间偏移到UTC
  • 日期和时间
  • 时间间隔
  • 循环时间间隔
  • ECMA-262规范(2017版中的20.3.1.16)仅实现日期和时间。

    链接地址: http://www.djcxy.com/p/35115.html

    上一篇: What is simplified in ECMAScript 5 date format compared to ISO 8601

    下一篇: Should ISO 8601 datetime for xCBL include dashes or not?