如何在JavaScript中显示用户时区的缩写名称(而不是GMT偏移量)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (329)

我试过这样的事情:

function set_local_time(utcSeconds) {
    var d = new Date(0); // The 0 sets the date to the epoch
    d.setUTCSeconds(utcSeconds); //update date object with utcSeconds
    return d.toLocaleTimeString() + ', ' + d.toLocaleDateString() + ' ' + d.toLocaleTimeString('en-us',{timeZoneName:'short'}).split(' ')[2] //time, date timezone 
}

这需要花费时间并将其转换为用户的本地时间。它的工作原理中的美国(它显示完全PDTEDT等),但在美国之外,它只是显示GMT偏移量(例如GMT+1GMT+8等)。

有没有办法在国际上显示用户时区的缩写名称?那么代替GMT+1伦敦,它会显示出来BST吗?

提问于
用户回答回答于

无法直接从Date对象获取此信息,但可以从Intl.DateTimeFormat()。resolvedOptions()接口获取此信息,如下所示:

let tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
console.log(tz);

这将提供当地时区的规范名称(例如America / New_York)。如果您想将时区映射到包含夏令时(例如EST,EDT,PST,EST)的缩写,最好的选择是使用像时刻一样的库。

扫码关注云+社区

领取腾讯云代金券