首页 >web前端 >js教程 >为什么 Chrome 67 对 1970 年之前的日期返回不同的时区偏移量?

为什么 Chrome 67 对 1970 年之前的日期返回不同的时区偏移量?

Susan Sarandon
Susan Sarandon原创
2024-11-09 00:48:02668浏览

Why is Chrome 67 returning a different time zone offset for dates before 1970?

Chrome 67 和历史时区更改

在最近的 Chrome 67 更新中,开发人员遇到了之前日期的时区处理问题到 1970 年。本文旨在解决此错误,并为受此错误影响的开发人员提供指导

问题描述

调用 new Date("1900-01-01T00:00:00").getTimezoneOffset() 时,用户观察到偏移量 - Chrome 67 中为 150 分钟,而其他浏览器(例如 Edge、Internet Explorer 和 Firefox)始终返回 -180 分钟。这种差异导致了依赖准确时区信息的代码混乱和错误。

分析和解决方案

与其他浏览器相比,Chrome 67 中的时区偏移量不同:归因于底层时区数据的来源和处理方式。 Chrome 67 似乎正在使用来自 IANA 时区数据库的数据,该数据库提供了有关历史时区更改的更详细信息。根据 IANA 数据库,相关时区(欧洲/莫斯科)在 1900 年的偏移量为 02:30:17。Chrome 将其向下舍入为 02:30,导致偏移量为 -150 分钟。

但是,对于 1970 年之前的日期,IANA 明确声明数据是“尽力而为”的,可能并不完全准确。因此,不鼓励依赖 1970 年之前日期的精确时区信息。

为了缓解此问题,建议开发人员避免使用具有 1970 年之前日期的 Date 构造函数。相反,他们应该坚持使用 1970 年之后的日期Unix 纪元(1970 年 1 月 1 日),因为该时期的 IANA 数据通常更可靠。如果准确的历史时区信息至关重要,开发人员可能需要探索替代数据源。

以上是为什么 Chrome 67 对 1970 年之前的日期返回不同的时区偏移量?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn