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中文网其他相关文章!