关于datetime:如何在Javascript中获取时区名称(PDT,EST等)?

How to get timezone name (PDT, EST, etc.) in Javascript?

本问题已经有最佳答案,请猛点这里访问。

使用Javascript,有没有办法根据用户的设备获取用户的时区名称(PDT,EST等)?

我试过的代码:

1
2
const timezone = jstz.determine()
const userTimezone = timezone.name()

但我想在PDT,EST等中取回用户的时区名称,而不是America / New_York。


将moment.js与moment-timezone附加组件一起使用,您可以执行以下操作。无论浏览器或操作系统如何,结果都是一致的,因为缩写在库提供的数据中。

示例结果来自计算机设置到美国太平洋时区:

1
2
var zone = moment.tz.guess();            //"America/Los_Angeles"
var abbr = moment.tz(zone).format("z");  // either"PST" or"PDT", depending on when run

免责声明

时区缩写不可靠或不一致。它们有许多不同的列表,并且存在许多含糊之处,例如"CST"用于中央标准时间,古巴标准时间和中国标准时间。一般来说,你应该避免使用它们,你永远不应该解析它们。

此外,时刻时区中的缩写来自IANA TZ数据库。在该数据的最新版本中,许多"发明的"缩写已被替换为数字偏移。例如,如果您的用户的时区是Asia/Vladivostok,而不是像以前版本中那样获得"VLAT",那么您将获得"+10"。这是因为缩写"VLAT"最初是由tz数据库发明的,用于填充数据,并且该区域的人员并未实际使用。请记住,缩写词也始终使用英语 - 即使在其他语言缩写可能实际使用的区域也是如此。