首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript new Date(str) -不同的解析规则

Javascript new Date(str) -不同的解析规则
EN

Stack Overflow用户
提问于 2012-10-04 05:19:32
回答 3查看 183关注 0票数 2

我在Chrome JS控制台中尝试了一下,我的地区时区设置为PST:

代码语言:javascript
复制
(new Date("07-15-2005"))

=> Fri 15 2005 00:00:00 GMT-0700 (日)

代码语言:javascript
复制
(new Date("07-15-2005")).getTime();

=> 1121410800000

但是...

代码语言:javascript
复制
(new Date("2005-07-15"))

=>清华-2005年7月14日17:00:00GMT-0700

代码语言:javascript
复制
(new Date("2005-07-15")).getTime();

=> 1121385600000

我原本希望在这两个版本中都能进行字符串解析。但是我不明白为什么当使用YYYY-MM-DD格式时,它会假定时区偏移。这就好像我用当地的TZ表达"2005-07-15“,但"07-15-2005”是用UTC表达的。

这是正确的解释吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-04 06:21:00

这个实现似乎是特定于供应商的,但是查看date parse的文档,我们可以看到,在1.8.5版本中,javascript同时支持RFC2822日期和ISO 8601日期。

根据Date.UTC文档,假设ISO8601日期为UTC时间,如果没有另外指定,则会自动添加时区差异。

RFC2822日期似乎被假定为本地时间,因此不会被修改。

票数 1
EN

Stack Overflow用户

发布于 2012-10-04 06:04:51

我似乎无法复制您的结果,但不同浏览器的结果似乎有所不同。

请参阅:http://jsfiddle.net/f7DMV/

在Firefox和Opera中,我只能正确解析中间行,其他的都是无效的日期。

在Chrome中,第一行和第二行都可以正确解析(没有区别),但最后一行仍然无效。

票数 0
EN

Stack Overflow用户

发布于 2012-10-04 06:22:29

不同的浏览器会有所不同。ECMA262规范指出,传递给Date函数的任何字符串都不是YYYY-MM-DD格式,它可能会退回到特定于实现的试探法或特定于实现的日期格式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12717089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档