Momentjs DST преобразование часового пояса неправильно, когда дата не летнее время

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

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

Это работает в обычных случаях, но я столкнулся с проблемой, когда во время тестирования я установил местный часовой пояс на восточное время (т. Е. Тот же часовой пояс, что и на серверных датах, поэтому все даты должны отображаться во внешнем интерфейсе как есть). Даты, когда DST не действовал, были сдвинуты на один час. Насколько я понимаю, это связано с тем, что библиотека использует текущие смещения часовых поясов при преобразовании из одного часового пояса в другой. Смещение 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"

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

0 ответов

Другие вопросы по тегам