Функция addBusinessDays из библиотеки date-fns используется для прибавления к дате определённого количества рабочих дней. Под рабочими днями подразумеваются дни недели с понедельника по пятницу включительно, при этом суббота и воскресенье автоматически исключаются из расчёта.
Функция применяется в задачах планирования, расчёта сроков выполнения задач, обработки бизнес-процессов, где календарные выходные не учитываются.
addBusinessDays(date, amount)
date Исходная дата, от которой выполняется отсчёт.
Может быть передана как объект Date, timestamp или строка,
преобразуемая в дату.
amount Количество рабочих дней для добавления. Допустимы положительные и отрицательные значения:
Функция выполняет итеративное прибавление дней к исходной дате, пропуская выходные:
Внутренне библиотека не опирается на календарные производственные праздники, учитываются только дни недели.
import { addBusinessDays } from 'date-fns';
const result = addBusinessDays(new Date(2024, 0, 1), 5);
console.log(result);
Если начальная дата — понедельник, то добавление 5 рабочих дней приведёт к следующему понедельнику.
import { addBusinessDays } from 'date-fns';
const date = new Date(2024, 0, 5); // пятница
const result = addBusinessDays(date, 1);
Результат будет понедельник, так как суббота и воскресенье пропускаются автоматически.
При добавлении нескольких рабочих дней функция корректно пересчитывает переходы через выходные:
import { addBusinessDays } from 'date-fns';
const date = new Date(2024, 0, 3); // среда
const result = addBusinessDays(date, 4);
Расчёт происходит так:
Поддерживается обратный отсчёт рабочих дней:
import { addBusinessDays } from 'date-fns';
const date = new Date(2024, 0, 8); // понедельник
const result = addBusinessDays(date, -3);
Движение будет происходить назад с пропуском выходных.
Функция не учитывает государственные и корпоративные праздники. Она работает исключительно с днями недели.
Для учёта праздников требуется дополнительная логика поверх функции.
Если передана строка или timestamp, происходит преобразование в дату:
addBusinessDays('2024-01-01', 2);
addBusinessDays(1704067200000, 2);
Исходный объект Date не модифицируется. Возвращается
новый экземпляр.
const date = new Date(2024, 0, 1);
const result = addBusinessDays(date, 3);
console.log(date); // исходная дата остаётся неизменной
console.log(result); // новая дата
import { addBusinessDays } from 'date-fns';
const start = new Date(2024, 2, 1);
const deadline = addBusinessDays(start, 10);
import { addBusinessDays } from 'date-fns';
function getDeliveryDate(orderDate) {
return addBusinessDays(orderDate, 3);
}
Используется для определения даты исполнения операций:
const settlementDate = addBusinessDays(tradeDate, 2);
При значительном количестве рабочих дней алгоритм последовательно пересчитывает календарь, пропуская выходные циклически.
addBusinessDays(new Date(2024, 0, 1), 100);
Результат корректно учитывает многократные переходы через недели.
Функция addDays добавляет календарные дни без исключений.
addDays(date, 5); // 5 календарных дней
addBusinessDays(date, 5); // 5 рабочих дней
Разница особенно заметна при пересечении выходных: вторая функция автоматически компенсирует субботу и воскресенье.
addBusinessDays(new Date(2024, 0, 1), 1);
Результат может попасть на официальный выходной, если он не является субботой или воскресеньем.
Функция не подходит для расчёта “через N календарных дней”, так как пропускает выходные.
Отрицательное значение означает движение назад по рабочим дням, а не календарным.
Алгоритм работает за линейное время относительно количества дней, однако оптимизирован для типичных значений (1–30 рабочих дней). При больших интервалах влияние производительности минимально в реальных сценариях, так как расчёты остаются предсказуемыми и без внешних зависимостей.
Часто используется вместе с:
Пример композиции:
import { addBusinessDays, format } from 'date-fns';
const date = addBusinessDays(new Date(), 7);
const formatted = format(date, 'yyyy-MM-dd');