阅读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/