Date.prototype.getHours()不起作用

时间:2017-11-16 05:14:40

标签: javascript

chrome v61.0.3163.100

var date = new Date("2017-11-15T04:00:00Z");
console.log(date) //Wed Nov 15 2017 04:00:00 GMT+0000 (UTC)
console.log(date.getHours() === date.getUTCHours()) //true

safari v11.0(12604.1.38.1.7)

var date = new Date("2017-11-15T04:00:00Z");
console.log(date) //Wed Nov 15 2017 12:00:00 GMT+0800 (CST)
console.log(date.getHours() === date.getUTCHours()) //false

为什么不同浏览器操作结果中的同一段代码不同,有时在同一浏览器中,存在差异

---------更新-----------

当我回复你时,Chrome已输出“Wed Nov 15 2017 12:00:00 GMT + 0800(CST)”,这是一个令人遗憾的问题。与此同时,我只吃了午餐而没有设定时区。

Intl.DateTimeFormat().resolvedOptions().timeZone 

after => "America/Chicago"

befor => "China/Shanghai"(this is true)
  

mdn document:一个0到23之间的整数,表示根据当地时间给定日期的小时数。

1 个答案:

答案 0 :(得分:0)

正如您在第二个示例中所看到的,时间以偏移量(+0800)存储,而在第一个示例中,时间不是(+0000)。 getHours()返回本地小时,而getUTCHours()是UTC小时。

差异似乎出现在时区的浏览器存储中,这两者都有其优点。显然你使用哪一个取决于环境,但不同之处在于偏移量(以字符串表示法显示)。