Определить аббревиатуру часового пояса с помощью luxon - PullRequest
3 голосов
/ 26 мая 2020

Результаты часового пояса момента с короткими сокращениями часовых поясов, например

moment.tz([2012, 0], 'America/New_York').format('z');    // EST
moment.tz([2012, 5], 'America/New_York').format('z');    // EDT

Есть ли аналогичный способ, которым мы можем добиться этого, используя luxon

Я пробовал offsetNameShort, но это приводит к GMT+5:30 для даты типа "2020-05-23T13:30:00+05:30"

Что-то вроде DateTime.fromISO(""2020-05-23T13:30:00+05:30"").toFormat('z') тоже не работает

Есть ли способ удалить часовой пояс +5:30 из формата?

1 Ответ

5 голосов
/ 26 мая 2020

Обзор Таблица форматирования токенов Luxon . Вы хотите ZZZZ для сокращенного именованного смещения.

Примеры:

DateTime.fromObject({year: 2012, month: 1, zone: 'America/New_York'})
  .toFormat('ZZZZ') //=> "EST"

DateTime.fromObject({year: 2012, month: 6, zone: 'America/New_York'})
  .toFormat('ZZZZ') //=> "EDT"

DateTime.local()
  .toFormat('ZZZZ') //=> "PDT"  (on my computer)

DateTime.fromISO("2020-05-23T13:30:00+05:30", {zone: 'Asia/Kolkata', locale: 'en-IN'})
  .toFormat('ZZZZ') //=> "IST"

Обратите внимание, что в последнем вы также должны указать en-IN в качестве локали, чтобы получить IST . В противном случае вы получите GMT+05:30, если локаль системы не уже en-IN. Это связано с тем, что Luxon полагается на API-интерфейсы интернационализации браузера, которые, в свою очередь, получают данные из CLDR .

В CLDR многие имена и сокращения обозначены как c для заданного локали, а не во всем мире. То же самое происходит с Europe/London, получая GMT+1 вместо BST, если локаль не en-GB. (Я лично не согласен с этим, но именно так это сейчас реализовано.)

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