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

时间:2018-10-05 19:33:26

标签: javascript timezone

我尝试过这样的事情:

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吗?

1 个答案:

答案 0 :(得分:3)

您不能直接从Date对象获取此信息,但可以从Intl.DateTimeFormat().resolvedOptions()界面获取,如下所示:

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

这将为您提供当地时区的规范名称(例如America / New_York)。如果您想将时区映射到包括夏令时的缩写(例如EST,EDT,PST,EST),则最好的选择是使用moment-timezone之类的库。