Почему представление часового пояса Date.toString изменилось в Node / Chrome и как я могу изменить его обратно? - PullRequest
0 голосов
/ 19 октября 2018

Похоже, что между v8 и v10 Node и примерно в то же время в Chrome (в настоящее время воспроизводится в версии 69.0.3497.100) метод Date.toString прекратил возвращать часть выходных данных часового пояса как аббревиатуру и начал возвращатьэто как целые слова.

Пример Date.toString в MDN указывает, что

new Date('August 19, 1975 23:15:30').toString()

Должен возвращать аббревиатуру в инициалах, например

Tue Aug 19 1975 23:15:30 GMT+0100 (BST)

То, что я подтвердил, работает в Узле 8. Однако, когда я запускаю тот же код в Узле v10, я получаю это:

Tue Aug 19 1975 23:15:30 GMT+0100 (British Summer Time)

Можно ли извлечь инициалы из текущего часового пояса без использования строкового кода или ручного ввода инициалов из слов?

Обратите внимание, что любое решение должно работать в Node AND Chrome.

1 Ответ

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

Решение должно состоять в том, чтобы установить для свойства timeZoneName объекта options значение "short" или "long" ( ссылка MDN ) - но это просто даетменя GMT+1 для краткости:

> d = new Date
> d.toLocaleString('en-US',{timeZone:'America/Los_Angeles',timeZoneName:'long'}) 
'10/19/2018, 3:31:04 AM Pacific Daylight Time'
> d.toLocaleString('en-US',{timeZone:'America/Los_Angeles',timeZoneName:'short'})
'10/19/2018, 3:31:04 AM PDT'
> d.toLocaleString('en-US',{timeZone:'Europe/London',timeZoneName:'long'})
'10/19/2018, 11:31:04 AM British Summer Time'
> d.toLocaleString('en-US',{timeZone:'Europe/London',timeZoneName:'short'})
'10/19/2018, 11:31:04 AM GMT+1'

Firefox также дает мне GMT+1 для короткой и дополнительно GMT+01:00 для длинной.

Если вам надежно нужны названия зон, посмотрите вМомент - см. Их раздел сокращенные названия часовых поясов .

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