为何Chrome控制台中Intl.DateTimeFormat返回时区与Date不一致?如何修复?
Intl.DateTimeFormat 时区与Date对象时区不一致的问题修复
问题描述
系统已设置为Asia/Shanghai时区,但在Chrome控制台中:
Intl.DateTimeFormat().resolvedOptions().timeZone返回错误的America/ChicagoIntl.DateTimeFormat().resolvedOptions().timeZone 'America/Chicago'- 但
Date对象可正常读取系统时区:new Date() Fri Oct 13 2023 10:24:20 GMT+0800 <--Asia/Shanghai new Date().getTimezoneOffset() -480 <--Asia/Shanghai
原因分析
Date对象直接读取系统底层时区数据,而Intl.DateTimeFormat的时区依赖Chrome的上层配置(区域设置、启动参数、扩展程序),当这些配置被强制修改时,就会出现两者结果不一致的情况。
解决步骤
检查Chrome区域设置
打开Chrome设置→「语言和区域」,确认「区域格式」设置为与系统时区匹配的选项(如「中国」),若之前自定义过,选择「跟随系统」后重启浏览器。排查Chrome启动参数
右键Chrome快捷方式→「属性」→「目标」栏,检查是否存在--timezone="America/Chicago"这类强制时区的参数,删除后重启Chrome。禁用扩展排查
暂时禁用所有Chrome扩展,重新测试Intl.DateTimeFormat().resolvedOptions().timeZone。若恢复正常,逐个启用扩展,定位到导致问题的扩展并移除。重置Chrome设置
若上述方法无效,进入Chrome设置→「高级」→「重置并清理」→「恢复原始设置」,重置后重新测试。
内容的提问来源于stack exchange,提问作者acwind
相关产品推荐
相关产品推荐

