Подсчет рабочих дней между двумя датами

Beginner

This tutorial is from open-source community. Access the source code

Введение

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

Подсчет рабочих дней между двумя датами

Для подсчета рабочих дней между двумя датами следуйте шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать практиковаться в написании кода.
  2. Используйте Array.from(), чтобы создать массив с длиной, равной количеству дней между startDate и endDate.
  3. Используйте Array.prototype.reduce(), чтобы перебрать массив, проверяя, является ли каждая дата рабочим днем, и увеличивать count.
  4. Обновите startDate следующим днем на каждой итерации с использованием Date.prototype.getDate() и Date.prototype.setDate(), чтобы продвинуть ее на один день.
  5. Обратите внимание, что эта функция не учитывает официальные праздники.

Вот код для реализации этого:

const countWeekDaysBetween = (startDate, endDate) =>
  Array.from({ length: (endDate - startDate) / (1000 * 3600 * 24) }).reduce(
    (count) => {
      if (startDate.getDay() % 6 !== 0) count++;
      startDate = new Date(startDate.setDate(startDate.getDate() + 1));
      return count;
    },
    0
  );

Вы можете использовать следующий код для тестирования функции:

countWeekDaysBetween(new Date("Oct 05, 2020"), new Date("Oct 06, 2020")); // 1
countWeekDaysBetween(new Date("Oct 05, 2020"), new Date("Oct 14, 2020")); // 7

Резюме

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