Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Date.getUTCHours()-Chrome、Firefox和Internet Explorer中的不同输出_Javascript_Google Chrome_Date_Firefox - Fatal编程技术网

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();