@Niki21212

Проблемы с датой, как правильно реализовать?

Реализуйте функцию 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)
  • Вопрос задан
  • 567 просмотров
Решения вопроса 1
@hikkama
Убери условие
if (time < 0) {
        days === 0;
      } else {
        days = Math.trunc(time / oneDay);
      }


Оставь
days = Math.trunc(time / oneDay);
  if (days === -0) days = 0
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы