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

JavaScriptJavaScriptBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/cond_stmts("Conditional Statements") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") subgraph Lab Skills javascript/variables -.-> lab-28240{{"Подсчет рабочих дней между двумя датами"}} javascript/data_types -.-> lab-28240{{"Подсчет рабочих дней между двумя датами"}} javascript/arith_ops -.-> lab-28240{{"Подсчет рабочих дней между двумя датами"}} javascript/comp_ops -.-> lab-28240{{"Подсчет рабочих дней между двумя датами"}} javascript/cond_stmts -.-> lab-28240{{"Подсчет рабочих дней между двумя датами"}} javascript/higher_funcs -.-> lab-28240{{"Подсчет рабочих дней между двумя датами"}} end

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

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

  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, чтобы улучшить свои навыки.