Реализуйте функцию getDaysBetweenDates которая принимает на вход две даты и возвращает количество полных дней между ними.
getDaysBetweenDates('1-1-2020', '1-2-2020'); // -> 1
Функция должна корректно работать с объектом Date
getDaysBetweenDates(new Date(2011, 6, 2, 6, 0), new Date(2012, 6, 2, 18, 0)); // -> 366
Функция должна корректно рабоать со значениями в миллисекундах
getDaysBetweenDates(1409796000000, 1409925600000); // -> 1
Если входные параметры - невалидные даты, то функция вовращает NaN:
getDaysBetweenDates('1-1-2020', 'дата'); // -> NaN
Если аргументов меньше 2-х, то функция должна пробросить исключение TypeError
getDaysBetweenDates(null); // -> TypeError
Как сделать, чтобы проходил тесты?
const getDaysBetweenDates = (a, b) => {
let date1 = new Date(a);
let date2 = new Date(b);
if (arguments.length < 2) {
throw new TypeError("TypeError");
} else {
let oneDay = 1000 * 60 * 60 * 24;
let time = date2.getTime() - date1.getTime();
let days = 0;
if (time < 0) {
days === 0;
} else {
days = Math.trunc(time / oneDay);
}
return days;
}
};
Ваш ответ не прошел тест!
FAIL test.js
валидные данные
✓ возвращает количество полных дней между датами (4ms)
✕ возвращает отрицательное число, если первая дата больше второй (3ms)
✓ обработка дат в миллисекундах getDaysBetweenDates(1409796000000, 1409925600000)
✓ обработка дат в виде текста getDaysBetweenDates('1-1-2020', '1-3-2020') (1ms)
невалидные данные
✓ возвращает NaN, если первая дата Invalid date
✓ возвращает NaN, если вторая дата Invalid date (1ms)
✓ возвращает NaN, если обе даты Invalid date
✕ проброс исключения TypeError , если передано менее 2-х аргументов (1ms)
крайние случаи
✓ разница между датами меньше дня, но первая дата меньше второй
✓ разница между датами меньше дня, но первая дата больше второй
✓ разница между датами ровно 24 часа (1ms)
✓ даты равны между собой
✓ одна из дат равна null (1ms)