momentjs — diff() возвращает неправильную разницу во времени

#javascript #momentjs #moment-timezone

#javascript #momentjs #момент -часовой пояс

Вопрос:

Я пытаюсь рассчитать время до полуночи в США / Центральной части страны. Проблема в том, что мои вычисления возвращают 3 часа 30 минут (для меня в Европе это 20:30).

 moment('2020-12-19 23:59:59', "YYYY-MM-DD HH:mm:ss", 'US/Central') - moment.tz('US/Central')
 

Я думаю, это должно сработать. Сейчас я вычисляю разницу между US / Central midnight и US / Central, но он возвращает неправильное количество миллисекунд.

Вы знаете, как заставить это работать?

Редактировать:

Пробовал diff с тем же результатом:

 moment('2020-12-19 23:59:59', "YYYY-MM-DD HH:mm:ss", 'US/Central').diff(moment.tz('US/Central'),'hours')
> 3
 

ПРАВКА2:

Попробовал moment().tz вместо moment.tz и это совсем не помогло…

 moment('2020-12-19 23:59:59', "YYYY-MM-DD HH:mm:ss", 'US/Central').diff(moment().tz('US/Central'),'hours')
> 3
 

Комментарии:

1. Вместо этого попробуйте moment().tz(‘US/ Central’)

2. @BerkKurkcuoglu Нет, это не работает…

3. Попробуйте установить часовой пояс по умолчанию вместо использования tz, как этот moment.tz.setDefault(‘US / Central’)

Ответ №1:

Возможно, попробуйте получить 2 раза по отдельности, а затем найдите другой способ проверить разницу между ними. Например

 var now = new Date();
var midnight = new Date();

midnight.setHours(0,0,0,0); // this set's the midnight var to exactly midnight at your systems timezone, you can then offset that time after this
 

Затем используйте moment или какой-либо другой пакет, чтобы проверить разницу между двумя временами.