Momentjs DST преобразование часового пояса неправильно, когда дата не летнее время - PullRequest
0 голосов
/ 13 декабря 2018

Я работаю над приложением, в котором даты хранятся в виде строк на сервере и создаются в восточном времени.Я пытался отобразить даты во внешнем интерфейсе как местное время, используя моменты, и преобразование кажется довольно простым:

var date = moment.tz(serverDate, 'America/New_York');
var convertedDate = date.local().format();

Это работает в обычных случаях, но я столкнулся с проблемой, когда установилмой местный часовой пояс - восточное время во время тестирования (т. е. тот же часовой пояс, что и у серверных дат, поэтому все даты должны отображаться во внешнем интерфейсе как есть).Даты, когда DST не действовал, были сдвинуты на один час.Насколько я понимаю, это связано с тем, что библиотека использует смещения current timezone при преобразовании из одного часового пояса в другой.Смещение ET во время летнего времени составляет -300, а моменты ET для дат вне DST - -240.Я пробовал другие методы конвертации с использованием библиотеки моментов, но все они все еще сводятся к использованию неправильных смещений.

var date = moment.tz('2018-05-30T04:00:00', 'America/New_York');
var converted = date.tz(moment.tz.guess()).format(); //"2018-05-30T03:00:00-05:00"

Есть ли способ с помощью минут для обработки этих случаев?

...