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