阅读this question-还提供了文档链接之后,我仍然对文档有疑问。

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提供了模式样本(正在运行)"Dec 25, 1995",该样本在2282和ISO中均未找到。
这个示例如何运作?订单必须为day month year(根据2282)。
标准中的分隔符是[space](在2282中)和[-]在ISO中。

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

最佳答案

对于Date.parse,请查看EcmaScript specification, section 15.9.4.2


  字符串可以解释为本地时间,UTC时间或时间
  在其他时区,具体取决于String的内容。的
  函数首先尝试根据以下内容解析String的格式
  Date Time String Format (15.9.1.15)中列出的规则。如果
  字符串不符合该功能的格式
  任何特定于实现的试探法或特定于实现的日期
  格式。无法识别的字符串或包含非法元素的日期
  字符串格式的值将导致Date.parse返回NaN


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

关于javascript - 坚持使用JavaScript Date标准格式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13780706/

10-09 23:50
查看更多