Как рассчитать разницу дат/времени в JavaScript?

Мне приходит две строки end_time:"2021-04-19 12:20:38", start_time:"2021-04-19 12:07:12". Надо получить их разницу в таком же формате.


Ответы (2 шт):

Автор решения: entithat

const data = {
  end_time: "2021-04-19 12:20:38",
  start_time: "2021-04-19 12:07:12"
};


function getDateDiff(startDate, endDate) {
  function rnd(n, p = 2) {
    return String(Math.floor(n)).padStart(p, '0');
  };

  const diff = (new Date(endDate) - new Date(startDate)) / 1000;
  const sm = {
    years: rnd(diff / 3600 / 61320, 4),
    months: rnd(diff / 604800),
    days: rnd(diff / 86400),
    hours: rnd(diff / 3600),
    mins: rnd(diff / 60),
    secs: diff % 60
  };

  return `${sm.years}-${sm.months}-${sm.days} ${sm.hours}:${sm.mins}:${sm.secs}`;
}

console.log(getDateDiff(data.start_time, data.end_time));

→ Ссылка
Автор решения: Aziz Umarov

let end_time = new Date("2021-04-19 12:20:38");
let start_time = new Date("2021-04-19 12:07:12");

console.log(new Date(end_time - start_time).toLocaleDateString("en-SE") + ' ' + new Date(end_time - start_time).toLocaleTimeString("en-SE"))

console.log(new Date(0));

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

→ Ссылка