В последней версии (2.15.1) функция parseZone () работает некорректно при смещении utc.
moment.parseZone ('2016-05-04T00: 00: 00Z'). format ()
=> "2016-05-04T08: 00: 00Z" плохо
moment.parseZone ('2016-05-04T00: 00: 00 + 08: 00'). format ()
=> "2016-05-04T00: 00: 00 + 08: 00" хорошо
Этот метод был хорош в версии 2.14.1, я недавно обновил moment.js до версии 2.15.1, и новая версия провалила мой тестовый пример.
Ага. Это неверно. Я, может быть, посмотрю, смогу ли я разобраться с этим сегодня вечером, думаю, я знаю, где это произошло.
К вашему сведению, эта ошибка была введена в исправление для # 3083, b2ee2d444282fcb90abfd43fe562253c73e14b08
Это может быть связано? Я тоже тестировал с 2.15.1:
t = moment().toISOString();
console.log(t.toString());
parsed = moment.parseZone(t);
console.log(parsed.toISOString());
Выходы:
2016-10-14T15:33:37.457Z
2016-10-14T17:33:37.457Z
Мое местное время - "Европа / Вена", и поэтому я знаю, откуда, вероятно, берется разница в 2 часа, но я не понимаю, почему это должно происходить.
С 2.14.1 я получаю ожидаемый результат:
2016-10-14T15:36:23.956Z
2016-10-14T15:36:23.956Z
Я считаю, что PR решит проблему - # 3504 - Пожалуйста, дайте мне знать, если это просто неправильно. @maggiepint
Я могу подтвердить, что это решает мою проблему из https://github.com/moment/moment/issues/3463#issuecomment -253836488
Самый полезный комментарий
3504 только что получил отметку об исправлении ошибки w00t!