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

时间:2017-08-15 08:02:59

标签: javascript datetime ecmascript-5 iso8601

  

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可以用空格代替。还有什么"简化"?

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

2 个答案:

答案 0 :(得分:2)

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

  • 扩展(ECMA使用相同):YYYY-MM-DDTHH:mm:ss.sssZ
  • 基本(与上述相同,但没有-:分隔符):YYYYMMDDTHHmmss.sssZ

还有变化:只是日期,时间和有或没有偏移。如果日期使用上述之一(基本或扩展),则时间必须使用相同的。

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

  • "不完全"日期:
    • 仅限年份:YYYY,或在数字前面带有+-信号的扩展版本
    • 只是年月:YYYY-MM
    • 只是月和日:--MM-DD
  • week datesYYYY-WwwYYYY-Www-DWww周数(大写W后跟2位数),但在这种情况下YYYY ISO周编号年< / em> - 引用维基百科:
  

ISO周编号年从第01周的第一天(星期一)开始,到新ISO年份之前的星期日结束(因此没有重叠或差距)。它包括52或53整周。一年中的第一个ISO周最多可能有三天,实际上正在公历年结束;如果三,他们是星期五,星期六和星期日。同样,一年中的最后一个ISO周可能最多有三天实际上是公历年开始的;如果三,他们是星期一,星期二和星期三。每个ISO周的星期四总是在由ISO周编号年表示的公历年。

  • 序数日期:YYYY-DDD年> )。
    示例:2017-02-012017-032相同( 2月1日 st 32 th 日这一年)。

上述序数格式也可以与时间一起使用。
示例:2017-02-01T10:002017-032T10:00都有效(和等效)。

ECMA仅允许YYYY-MM-DDTHH:mm:ss.sssZ简化它。它还允许extended years(带有6位数字和一个信号),但保持其他字段的格式相同。

ISO 8601还定义了另一个概念(DurationsTime Intervals)。虽然它们都与日期和时间相关,they're not the same thing:持续时间是&#34;时间量&#34; (例如&#34; 2天,4小时和5分钟&#34;)和间隔是&#34;两个时间点之间的间隔时间&#34; (包括开始和结束日期)。

答案 1 :(得分:0)

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

  • 日期
  • 时间
  • 协调世界时(UTC)
  • 偏移到UTC的本地时间
  • 日期和时间
  • 时间间隔
  • 重复时间间隔

ECMA-262规范(2017版本中的20.3.1.16)仅实现日期和时间。