使用 Javascript,有没有办法根据用户的设备获取用户的时区名称(PDT、EST 等)?
我尝试过的代码:
const timezone = jstz.determine()
const userTimezone = timezone.name()
但我想以 PDT、EST 等方式取回用户的时区名称,而不是 America/New_York。
Using moment.js http://momentjs.com与时刻时区 http://momentjs.com/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 https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations of http://www.timeanddate.com/time/zones/ them http://www.timetemperature.com/abbreviations/world_time_zone_abbreviations.shtml,并且存在很多歧义,例如“CST”代表中部标准时间、古巴标准时间和中国标准时间。一般来说,您应该避免使用它们,并且应该never解析它们。
此外,时刻时区的缩写来自IANA TZ 数据库 https://en.wikipedia.org/wiki/Tz_database。在该数据的最新版本中,许多“发明的”缩写已被数字偏移量取代。例如,如果您的用户的时区是Asia/Vladivostok
,而不是得到"VLAT"
就像你在以前的版本中可能有的那样,你会得到"+10"
。这是因为缩写“VLAT”最初是tz数据库为了填充数据而发明的,并没有被该地区的人们实际使用。请记住,缩写也始终是英文的 - 即使在实际使用其他语言缩写的区域也是如此。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)