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之间的整数,表示根据当地时间给定日期的小时数。
答案 0 :(得分:0)
正如您在第二个示例中所看到的,时间以偏移量(+0800)存储,而在第一个示例中,时间不是(+0000)。 getHours()
返回本地小时,而getUTCHours()
是UTC小时。
差异似乎出现在时区的浏览器存储中,这两者都有其优点。显然你使用哪一个取决于环境,但不同之处在于偏移量(以字符串表示法显示)。