使用Javascript,有没有办法根据用户的设备获取用户的时区名称(PDT,EST等)?
我试过的代码:
const timezone = jstz.determine()
const userTimezone = timezone.name()
但是我希望在PDT,EST等用户的时区名称中取代用户,而不是America / New_York。
答案 0 :(得分:4)
将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,并且存在许多含糊之处,例如&#34; CST&#34;适用于中央标准时间,古巴标准时间和中国标准时间。一般来说,你应该避免使用它们,你应该从不解析它们。
此外,时刻时区中的缩写来自IANA TZ Database。在这些数据的最新版本中,许多人发明了#34;缩写已被替换为数字偏移。例如,如果您的用户的时区为Asia/Vladivostok
,而不是像以前版本中那样获得"VLAT"
,那么您将获得"+10"
。这是因为缩写&#34; VLAT&#34;最初是由tz数据库发明的,用于填充数据,并且该区域的人员并未实际使用。请记住,缩写词总是以英语显示 - 即使在其他语言缩写可能实际使用的区域也是如此。