Javascript new Date(str) - different parsing rules
我在ChromeJS控制台中尝试了这个方法,我的本地时区设置为pst:
1 | (new Date("07-15-2005")) |
=>2005年7月15日星期五00:00:00 GMT-0700(PDT)
1 | (new Date("07-15-2005")).getTime(); |
号
=>1121410800000
但是……
1 | (new Date("2005-07-15")) |
=>2005年7月14日星期四17:00:00 GMT-0700(PDT)
1 | (new Date("2005-07-15")).getTime(); |
。
=>1121385600000
我希望在这两种情况下都进行字符串分析。但我不明白为什么使用格式YYYY-MM-DD时,它假定时区偏移。就好像我在本地的TZ中表达"2005-07-15",但"07-15-2005"是用UTC表示的。
解释正确吗?
该实现似乎是特定于供应商的,但是从日期分析文档中我们可以看到,从1.8.5版开始,javascript既支持RFC282日期,也支持ISO 8601日期。
根据date.utc文档,如果未另行指定,则假设ISO 8601日期为UTC时间,因此会自动添加时区差异。
RFC2822日期似乎假定为当地时间,因此不作修改。
它会因浏览器而异。ECMA262规范指出,任何不采用
我似乎无法复制您的结果,但不同浏览器的结果似乎不同。
参见:http://jsfiddle.net/f7dmv/
在firefox和opera中,我只得到正确的中间行解析,其他的是无效的日期。
在chrome中,第一行和第二行都正确解析(没有区别),但最后一行仍然无效。