Как отобразить сокращенное название часового пояса пользователя (без смещения по Гринвичу) в JavaScript? - PullRequest
0 голосов
/ 05 октября 2018

Я пробовал что-то вроде этого:

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+1, GMT+8 и т. Д.).

Существует ли способ отображения сокращенного названия часового пояса пользователя на международном уровне?Таким образом, вместо GMT+1 для Лондона будет отображаться BST вместо?

1 Ответ

0 голосов
/ 05 октября 2018

Вы не можете получить эту информацию непосредственно из Date объекта, но вы можете получить ее из Intl.DateTimeFormat (). ResolvedOptions () интерфейса, подобного этому:

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

Это даст вам каноническое название местного часового пояса (например, America / New_York).Если вы хотите сопоставить часовой пояс с аббревиатурой, включая летнее время (например, EST, EDT, PST, EST), лучше всего использовать библиотеку, такую ​​как момент-часовой пояс .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...