не могу получить разницу в дате и времени в javascript (nodejs)

Я пытаюсь получить разницу в день/час/минуту из двух отметок даты и времени JavaScript, текущее время вычитает время будущего события, которое затем будет отображаться в интерфейсе приложения.

две даты: Дата будущего события - 2017-10-01 18:00:00 Текущая дата - сейчас()

Текущий код:

var currentTime = new Date();
var eventStarts = results[0][i].eventstarts;
var difference = differenceInMilliseconds(eventStarts, currentTime);
var date = new Date(difference);
var days = date.getDay();
var hours = date.getHours();
var minutes = "0" + date.getMinutes();
var formattedTime = days + ':' + hours + ':' + minutes.substr(-2);

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

В настоящее время я использую пакет npm date-fns, и я не против попробовать другой пакет, если это поможет.


person Charles L.    schedule 05.09.2017    source источник
comment
Вы пробовали момент momentjs.com?   -  person CascadiaJS    schedule 05.09.2017
comment
Будьте осторожны при написании JavaScript, чтобы избежать конфликта поиска с Java.   -  person Basil Bourque    schedule 05.09.2017


Ответы (1)


Когда у вас есть Date, он основан на 1 января 1970 года. Поэтому, когда вы настраиваете new Date(difference). Вы устанавливаете дату, относящуюся к 1 января 1970 года, так что это не то, что вы ищете.

Я бы порекомендовал вам использовать библиотеку moment.js, которая позволяет легко манипулировать датами.


Пример @manzurul здесь

var now  = "04/09/2013 15:00:00";
var then = "02/09/2013 14:20:30";

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

console.log(d.days(), d.hours(), d.minutes(), d.seconds());
person Orelsanpls    schedule 05.09.2017
comment
ах, хорошо, это имеет смысл, я никогда раньше не использовал moment.js, как мой код будет работать с moment.js? - person Charles L.; 05.09.2017
comment
Вот сообщение stackoverflow о разнице между двумя датами - person Orelsanpls; 05.09.2017