JavaScript Moment.js неправильно обрабатывает часовой пояс - PullRequest
0 голосов
/ 15 октября 2018

У меня есть следующий код JavaScript с использованием Moment.js.

const time = "Thu Nov 01 2018 00:00:00 GMT-0400";
const momentTime = moment(time, "ddd MMM DD YYYY HH:mm:ss GMT-ZZ");
console.log(momentTime.toString()); // Thu Nov 01 2018 00:00:00 GMT-0600
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

Проблема состоит в том, что я ожидаю, что следующие значения равны друг другу (в настоящее время они не совпадают):

  • time (Thu Nov 01 2018 00:00:00 GMT-0400)
  • momentTime.toString() (Thu Nov 01 2018 00:00:00 GMT-0600)

Я ожидаю, что momentTime.toString() будет равно Wed Oct 31 2018 22:00:00 GMT-0600 (если я правильно сделал свою математику).

Похоже, что по какой-то причине он просто неправильно анализирует часовой пояс или GMT.

В соответствии с документацией Moment.js Я должен иметь возможность использовать ZZ для анализаэто в правильный часовой пояс.

Есть идеи, что я здесь не так делаю?

1 Ответ

0 голосов
/ 06 ноября 2018

Как уже упоминалось в комментариях, изменение кода на следующее работало:

const time = "Thu Nov 01 2018 00:00:00 GMT-0400";
const momentTime = moment(time, "ddd MMM DD YYYY HH:mm:ss ZZ");
console.log(momentTime.toString()); // Wed Oct 31 2018 22:00:00 GMT-0600
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

Таким образом, в основном изменилось GMT-ZZ на ZZ в строке формата.

...