Необходимо найти разницу двух дат и получить ответ в днях, подскажите, почему выдаёт NaN?

let somedate1 = (date1, date2) => {
  const [day, month, year] = date1.split('.').map(Number);
  const [days, months, years] = date2.split('.').map(Number);
  let firstDate = new Date()[year, month - 1, day];
  let secondDate = new Date()[years, months - 1, days];
  let diffDate = (secondDate - firstDate) / (1000 * 3600 * 24);
  return diffDate;
}

console.log(somedate1('05.05.2005', '10-10-2020'));


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

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

На самом деле все просто. если запустить этот код

let somedate1 = (date1, date2) => {
  const [day, month, year] = date1.split('.').map(Number);
  const [days, months, years] = date2.split('.').map(Number);
  let firstDate = new Date([year, month - 1, day]);
  let secondDate = new Date([years, months - 1, days]);
  let diffDate = ((secondDate - firstDate) / 1000) * 3600 * 24;
  console.log(firstDate, ' ', secondDate);
  return diffDate;
};

console.log(somedate1('05.05.2005', '10-10-2020'));

то выведет

2005-04-04T20:00:00.000Z   Invalid Date
NaN

Проблема явно во втором.

В

console.log(somedate1('05.05.2005', '10-10-2020'));

Вторую дату вы вводите через "-", а разделение делаете по ".".

Рабочий код будет выглядеть так:

let somedate1 = (date1, date2) => {
  const [day, month, year] = date1.split('.').map(Number);
  const [days, months, years] = date2.split('-').map(Number);
  let firstDate = new Date([year, month - 1, day]);
  let secondDate = new Date([years, months - 1, days]);
  let diffDate = ((secondDate - firstDate) / 1000) * 3600 * 24;
  console.log(firstDate, ' ', secondDate);
  return diffDate;
};

console.log(somedate1('05.05.2005', '10-10-2020'));

Вывод:

2005-04-04T20:00:00.000Z   2020-09-09T21:00:00.000Z
42080290560000

Или так:

let somedate1 = (date1, date2) => {
  const [day, month, year] = date1.split('.').map(Number);
  const [days, months, years] = date2.split('.').map(Number);
  let firstDate = new Date([year, month - 1, day]);
  let secondDate = new Date([years, months - 1, days]);
  let diffDate = ((secondDate - firstDate) / 1000) * 3600 * 24;
  console.log(firstDate, ' ', secondDate);
  return diffDate;
};

console.log(somedate1('05.05.2005', '10.10.2020'));

Вывод:

2005-04-04T20:00:00.000Z   2020-09-09T21:00:00.000Z
42080290560000
→ Ссылка