Javascript Date.getUTCHours()-Chrome、Firefox和Internet Explorer中的不同输出
给定以下代码:Javascript Date.getUTCHours()-Chrome、Firefox和Internet Explorer中的不同输出,javascript,google-chrome,date,firefox,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日期应该是什么 我想
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日期应该是什么
我想知道是否有交叉浏览器本机解决方案。。。我不想为这么简单的事情使用库。Chrome解释您的日期
var date=new date(“2014-02-26T15:52:30”)代码>与var日期=新日期相同(“2014-02-26T15:52:30Z”)代码>(注意z,表示utc时区)
FF和IE解释var日期=新日期(“2014-02-26T15:52:30”)代码>由于处于当前用户的时区,在我的情况下,它将是var date=new date(“2014-02-26T15:52:30-05:00”)代码>(GMT-0500)
我强烈建议您根据计算需要使用UTC,并在希望向用户显示日期时执行时区转换。时区可能会成为一个真正的难题。问题不在于getUTCHours()
而在于日期字符串(2014-02-26T15:52:30
)
根据我们的经验,最好有两种
var date = new Date("2014-02-26T15:52:30Z");
或
这确保了所有浏览器之间的通用性
在你的情况下,最好是
var dateString = "2014-02-26T15:52:30" + "Z";
var date = new Date(dateString);
date.getUTCHours();
也许您应该在日期字符串中指定时区?不确定根据标准应该如何解释它。@aknuds1以及如何指定时区?这是日期规范的一部分吗?无论如何,我不能更改日期字符串,因为这是我从服务器收到的格式。如果您希望服务器的时区为-3小时,您应该在日期字符串中附加-03:00,例如新日期('2014-02-26T15:52:30-03:00')。getUTCHours()
。可能重复@Veepran谢谢,这证实了Chrome是正确的(耶,Chrome)。这就是我要说的,虽然它说一个不存在的时区应该被视为“Z”,所以奇怪的是FF和IE做得不同。就像一个老板。我在任何地方都找不到那个信息。我只需在字符串末尾加上“Z”来处理这个问题。该死的浏览器。。。谢谢:D我也这么做了,添加了Z以确保他们都将其视为UTC
var dateString = "2014-02-26T15:52:30" + "Z";
var date = new Date(dateString);
date.getUTCHours();