给出以下代码:
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本机解决方案...我不想使用库来做这么简单的事情。
答案 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();