Chrome中new Date()返回错误时区?GMT+0805异常原因咨询
为什么Chrome 68.0.3440.7处理1899年日期时出现GMT+0805时区异常?
这其实是Chrome旧版本处理历史时区偏移时的一个bug,背后跟中国时区的历史变更直接相关。
核心原因拆解:
- 中国在1902年之前,官方使用的是北京地方时,对应的UTC偏移量是GMT+8:05:43(显示时简化为+0805);1902年之后才统一切换到GMT+8的标准时区(也就是现在的中国标准时间)。
- Chrome 68.0.3440.7这个旧版本的时区数据库,没有正确区分1900年前后的时区偏移规则,导致对1899年的日期错误应用了更早的北京地方时偏移。而其他浏览器(或Chrome的后续版本)的时区数据库已经修正了这个历史时区的处理逻辑,所以能返回正确的GMT+0800。
快速验证测试:
你可以在同版本Chrome里执行这段代码试试:
new Date(1902, 1, 10)
应该会返回Mon Feb 10 1902 00:00:00 GMT+0800 (中国标准时间)——因为1902年之后已经启用了标准时区,这时候Chrome的处理是正常的。
解决办法:
升级你的Chrome到较新版本即可,后续Chrome更新了时区数据,已经修复了这个历史日期的时区偏移bug。
内容的提问来源于stack exchange,提问作者Gavin Yang
相关产品推荐
相关产品推荐

