Date.getUTCHours() - Chrome,Firefox和Internet Explorer中的不同输出

时间:2014-02-26 19:41:30

标签: javascript google-chrome date firefox

给出以下代码:

var date = new Date("2014-02-26T15:52:30");
date.getUTCHours();
// Outputs
// Chrome: 15
// Firefox: 18
// IE: 18

我不确定应该使用哪种日期方法。 Date.getHours在FF和IE中返回正确的小时,​​但在Chrome中不正确。并且Date.getUTCHours()向我显示了正确的日期,但在IE和FF中都不正常。无论如何有什么不同?什么UTC日期应该是什么?

我想知道是否有CrossBrowser本机解决方案...我不想使用库来做这么简单的事情。

2 个答案:

答案 0 :(得分:6)

Chrome会将您的日期var date = new Date("2014-02-26T15:52:30");var date = new Date("2014-02-26T15:52:30Z");相同(请注意z,表示utc时区)。

FF和IE将var date = new Date("2014-02-26T15:52:30");解释为当前用户的时区,在我的情况下,它将是var date = new Date("2014-02-26T15:52:30-05:00");(GMT-0500)

我强烈建议您坚持使用UTC计算需求,并在想要向用户显示日期时执行时区转换。时区可能会成为一种真正的痛苦。

答案 1 :(得分:3)

问题不在于 getUTCHours() 与您的dateString( 2014-02-26T15:52:30 )。

根据ISO8601,最好有

var date = new Date("2014-02-26T15:52:30Z");

var date = new Date("2014-02-26T15:52:30+00:00");

这确保了所有浏览器之间的共同点。

在你的情况下,最好有

var dateString = "2014-02-26T15:52:30" + "Z";
var date = new Date(dateString);
date.getUTCHours();