Функция moment.diff не работает должным образом с датами, переданными в виде строк

1

Я использую функцию moment.diff для вычисления продолжительности времени между двумя датами.

Мой код выглядит так:

function calculateDurationBetweenDates(now, then){    
    if(!now || !then){        
        return;        
    }

    var ms = moment(then, "DD-MM-YYYY HH:mm:ss").diff(moment(now, "DD-MM-YYYY HH:mm:ss"));        
    var d = moment.duration(ms);        
    var s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");

    return s;
}

calculateDurationBetweenDates ("2016-10-08 11:29:23","2016-10-08 10:29:23");

это дает мне результат отрицательный как -1:00:00.

Я не понимаю, почему.

  • 0
    Может быть, это проблема часового пояса?
  • 3
    Я не вижу проблемы ... Разница между этими датами составляет ровно 1 час ... Вас беспокоит тот факт, что число отрицательное? Если это так, просто поменяйте дату или используйте Math.abs() . Также ваш формат неверен, это должен быть YYYY-MM-DD а НЕ DD-MM-YYYY .
Теги:
momentjs

1 ответ

0

Переключить даты:

var ms = moment(now, "DD-MM-YYYY HH:mm:ss").diff(moment(then, "DD-MM-YYYY HH:mm:ss"));

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню