我尝试过这样的事情:
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
}
花费时间并将其转换为用户的本地时间。它在美国境内完美运行(显示PDT
,EDT
等),但是在美国以外,仅显示GMT偏移量(例如GMT+1
,GMT+8
,等)。
是否可以在国际上显示用户时区的缩写名称?因此,它会显示GMT+1
而不是伦敦的BST
吗?
答案 0 :(得分:3)
您不能直接从Date
对象获取此信息,但可以从Intl.DateTimeFormat().resolvedOptions()界面获取,如下所示:
let tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
console.log(tz);
这将为您提供当地时区的规范名称(例如America / New_York)。如果您想将时区映射到包括夏令时的缩写(例如EST,EDT,PST,EST),则最好的选择是使用moment-timezone之类的库。