Не могу получить разницу между датой и временем в 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, и я не против попробовать другой пакет, если это поможет

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());
Другие вопросы по тегам