为什么Date.parse("2011-11-15")
会考虑网络浏览器中的当前时区,Date.parse("2011/11/15")
不会?为什么结果不同?
答案 0 :(得分:9)
根据ECMA-262的第15.9.1.15节,第一种形式被视为UTC的ISO日期。正如第15.9.4.2节所述,第二种形式正在以特定于实施的方式加以考虑:
parse
函数将ToString
运算符应用于其参数,并将生成的String解释为日期 和时间;它返回一个Number,即与日期和时间对应的UTC时间值。字符串可能是 解释为本地时间,UTC时间或某个其他时区的时间,具体取决于内容 串。该函数首先尝试根据日期时间字符串格式(15.9.1.15)中调出的规则来解析字符串的格式。如果String不符合该格式,则该函数可能会回退到任何格式 特定于实现的启发式或特定于实现的日期格式
所以我怀疑“2011/11/15”正在转换为11月15日午夜的 local ,而“2011-11-15”正在转换为 UTC 11月15日午夜。
答案 1 :(得分:1)
日期/时间字符串可以是ISO 8601格式。从...开始 支持JavaScript 1.8.5 / Firefox 4,ISO 8601的子集。对于 例如," 2011-10-10" (仅限日期)或" 2011-10-10T14:48:00(日期和日期) 时间)可以传递和解析。 ISO日期中的时区尚未定位 支持,例如" 2011-10-10T14:48:00 + 0200" (带时区)没有 给出了预期的结果。