Введение
В этом практическом занятии мы изучим функцию JavaScript, которая помогает вычислить дату после добавления заданного количества рабочих дней. Функция использует манипуляцию массивами и итерацию дат для увеличения начальной даты, учитывая выходные дни. Это практическое занятие поможет вам понять, как манипулировать датами в JavaScript и применять бизнес-логику к вычислениям дат.
Функция для добавления рабочих дней к заданной дате
Для вычисления будущей даты путём добавления заданного количества рабочих дней можно использовать функцию addWeekDays. Вот шаги:
- Откройте Терминал/SSH и введите
node, чтобы начать практиковаться в написании кода. - Используйте функцию
addWeekDays, которая принимает два аргумента:startDateиcount. startDate— это дата, с которой вы хотите начать добавлять рабочие дни.count— количество рабочих дней, которое вы хотите добавить к начальной дате.- Функция строит массив с использованием метода
Array.from()и устанавливает его длину равной количеству рабочих дней, которое нужно добавить. - Метод
Array.prototype.reduce()используется для итерации по массиву, начиная отstartDate, и увеличения его с использованиемDate.prototype.getDate()иDate.prototype.setDate(). - Функция проверяет, является ли текущая
dateвыходным днём или нет. - Если текущая
dateявляется выходным днём, функция обновляет её, добавив один или два дня, чтобы сделать её рабочим днём. - Функция не учитывает официальные праздники.
const addWeekDays = (startDate, count) =>
Array.from({ length: count }).reduce((date) => {
date = new Date(date.setDate(date.getDate() + 1));
if (date.getDay() % 6 === 0)
date = new Date(date.setDate(date.getDate() + (date.getDay() / 6 + 1)));
return date;
}, startDate);
Вот несколько примеров использования функции addWeekDays:
addWeekDays(new Date("Oct 09, 2020"), 5); // 'Oct 16, 2020'
addWeekDays(new Date("Oct 12, 2020"), 5); // 'Oct 19, 2020'
Резюме
Поздравляем! Вы завершили практическое занятие по добавлению рабочих дней к дате. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.