Вопрос по node.js, date, javascript – Moment.js разница между датами UTC

16

Я использую Moments.js для работы с датами в JavaScript. Все даты указаны в UTC (или должны быть).

У меня есть следующая дата (60 минут с текущего времени):

//Wed, 04 Apr 2012 21:09:16 GMT
to   = moment.utc().add('m', 60).toDate();

Теперь я хочу получить разницу в секундах между этой датой и текущим временем UTC, поэтому я делаю:

seconds = moment.utc().diff(to, 'seconds');

Это возвращается10800 вместо того3600 так что 3 часа вместо одного.

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

Спасибо

РЕДАКТИРОВАТЬ

Я обновил строку доseconds = moment().diff(to, 'seconds'); и он получает точные секунды, но это-3600 вместо положительного.

РЕДАКТИРОВАТЬ

Теперь у меня есть эти два момента:

{ _d: Thu, 05 Apr 2012 17:33:18 GMT, _isUTC: true }
{ _d: Thu, 05 Apr 2012 16:38:45 GMT, _isUTC: true }

d1 и d2.

Когда я делаюd1.diff(d2, 'hours', true); это возвращает4. Я думаю, это определенно связано с UTC, но, похоже, этодолже Работа

Ваш Ответ

1   ответ
17

https: //github.com/timrwood/moment/issues/26

Чтобы обойти это, используйте вместо этого следующее.

var a = moment.utc().add('m', 60).toDate(),
    b = moment().diff(to, 'seconds'); // use moment() instead of moment.utc()

Кроме того, если вам нужно получитьtoString даты, вы можете использоватьmoment().toString() как прокси на завернутыйDate().toString()

Просто к вашему сведению, это было исправлено в версии 1.6.0. timrwood

Похожие вопросы