1

在阅读了这个问题之后- 它还提供了文档链接,我仍然对文档有疑问。

MDN:Date.parse

表示 RFC2822 或 ISO 8601 日期的字符串。

好的,RFC2282

date-time       =       [ day-of-week "," ] date FWS time [CFWS]
day-of-week     =       ([FWS] day-name) / obs-day-of-week
day-name        =       "Mon" / "Tue" / "Wed" / "Thu" /
                       "Fri" / "Sat" / "Sun"

date            =       day month year
year            =       4*DIGIT / obs-year
month           =       (FWS month-name FWS) / obs-month
month-name      =       "Jan" / "Feb" / "Mar" / "Apr" /
                        "May" / "Jun" / "Jul" / "Aug" /
                        "Sep" / "Oct" / "Nov" / "Dec"

day             =       ([FWS] 1*2DIGIT) / obs-day

现在 - ISO8601

 Year:
      YYYY (eg 1997)
   Year and month:
      YYYY-MM (eg 1997-07)
   Complete date:
      YYYY-MM-DD (eg 1997-07-16)

好的。

问题 :

  • MDN 提供了一个在 2282 和 ISO 中"Dec 25, 1995"找不到的模式示例(正在工作) 。这个样本是如何工作的?顺序必须是day month year (根据 2282)。

  • 标准中的分隔符是[space](在 2282 中)和[-]ISO。

    那么为什么这个示例有效(跨浏览器)?Date.parse("2011/11/23")

4

1 回答 1

1

对于Date.parse,请查看EcmaScript 规范,第 15.9.4.2 节

根据字符串的内容,字符串可能被解释为本地时间、UTC 时间或其他时区的时间。该函数首先尝试根据日期时间字符串格式 (15.9.1.15)中调用的规则解析字符串的格式。如果字符串不符合该格式,则函数可能会退回到任何特定于实现的启发式或特定于实现的日期格式。无法识别的字符串或包含格式字符串非法元素值的日期将导致Date.parse返回NaN

因此,MDN 的 Mozilla 特定文档与此非常接近。官方的“EcmaScript 日期时间字符串格式”是 ISO 8601 的子集,否则 Gecko 浏览器会尝试将其解释为 RFC 2822 甚至其他内容(这可能包括"Dec 25, 1995")。我强烈怀疑这"2011/11/23"确实适用于跨浏览器,尽管对于最近的版本可能是正确的。

于 2012-12-08T19:01:26.260 回答