这个问题在这里已经有了答案:
Getting the client's time zone (and offset) in JavaScript
(32 个回答)
Get timezone abbreviation using offset value
(2 个回答)
5年前关闭。
使用 Javascript,有没有办法根据用户的设备获取用户的时区名称(PDT、EST 等)?
我试过的代码:
const timezone = jstz.determine()
const userTimezone = timezone.name()
但我想取回用户在 PDT、EST 等中的时区名称,而不是 America/New_York。
最佳答案
使用 moment.js与 moment-timezone附加组件,您可以执行以下操作。无论浏览器或操作系统如何,结果都是一致的,因为缩略语在库提供的数据中。
示例结果来自设置为美国太平洋时区的计算机:
var zone = moment.tz.guess(); // "America/Los_Angeles"
var abbr = moment.tz(zone).format("z"); // either "PST" or "PDT", depending on when run
免责声明
时区缩写不可靠或不一致。有很多不同的lists of them ,并且有很多歧义,例如“CST”代表中央标准时间、古巴标准时间和中国标准时间。通常,您应该避免使用它们,并且永远不应该解析它们。
此外,moment-timezone 中的缩写来自 IANA TZ Database .在该数据的最新版本中,许多“发明”缩写已被数字偏移量取代。例如,如果您的用户的时区是
Asia/Vladivostok
, 而不是得到 "VLAT"
就像您在以前的版本中一样,您将获得 "+10"
.这是因为缩写“VLAT”最初是tz数据库为了填充数据而发明的,并没有被该地区的人实际使用。请记住,缩写词也始终使用英语 - 即使在实际使用其他语言缩写词的区域也是如此。
关于javascript - 如何在 Javascript 中获取时区名称(PDT、EST 等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40494995/