指定的时区无效:美国/阿拉斯加、美国/亚利桑那、美国/山区、美国/中部等 Chrome 中的错误但在 Mozilla 中工作

kir*_*oud 4 javascript timezone google-chrome ecmascript-intl

我试图将时间戳转换为不同时区的本地时间,发现某些 TimeZone 在 Chrome (v76.0.38) 中不支持,但在 Mozilla (v68.0.2) 中工作正常。

  let d = new Date(1567083463);
  let n = d.toLocaleString('en-GB', { timeZone: "US/Arizona" });
  
Run Code Online (Sandbox Code Playgroud)

未捕获的 RangeError:指定的时区无效:美国/亚利桑那州

在 Date.toLocaleString()

其他几个时区也抛出同样的错误

US/Alaska US/Mountain US/Central US/East-Indiana

这些时区得到官方支持,如其网站 Chrome Supported Time Zone Values 中所述

小智 14

该页面描述了另一个 google 产品支持的时区,而不是 Chrome

参考MDN 的文档toLocaleString

timeZone
要使用的时区。实现必须识别的唯一值是“UTC”;默认值是运行时的默认时区。实现还可以识别IANA 时区数据库的时区名称,例如“Asia/Shanghai”、“Asia/Kolkata”、“America/New_York”。

可以在该 IANA 链接中找到有效时区,或者您可以使用Wikipedia: List of tz database time zone。您会注意到所有“US/*”时区都已弃用。仅使用来自维基百科页面的规范条目,例如:

  • 美国/纽约
  • 美国/丹佛
  • 美国/芝加哥

等等。