РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
310 of 541 menu

Функция busday_offset

Функция busday_offset из модуля numpy позволяет вычислить дату, которая наступает через заданное количество рабочих дней (или до) от указанной начальной даты. Она учитывает стандартные выходные дни (суббота и воскресенье) и может принимать пользовательский календарь с праздничными днями. Первый параметр dates - начальная дата или массив дат. Второй параметр offsets - количество рабочих дней для смещения (положительное - в будущее, отрицательное - в прошлое). Дополнительные параметры: roll (поведение для нерабочих дней), weekmask (маска рабочих дней) и holidays (праздничные дни).

Синтаксис

np.busday_offset(dates, offsets, roll='raise', weekmask='1111100', holidays=None, busdaycal=None, out=None)

Пример

Давайте вычислим дату через 5 рабочих дней от текущей:

import numpy as np arr = np.busday_offset('2026-01-01', 5) print(arr)

Результат выполнения кода:

'2026-01-08'

Пример

Попробуем сместиться на отрицательное количество дней (в прошлое):

import numpy as np arr = np.busday_offset('2026-01-12', -3) print(arr)

Результат выполнения кода:

'2026-01-07'

Пример

Используем параметр roll со значением 'forward', чтобы автоматически перенести стартовую дату на ближайший рабочий день в будущем, если она выпала на выходной:

import numpy as np # 2026-01-03 - суббота arr = np.busday_offset('2026-01-03', 1, roll='forward') print(arr)

Результат выполнения кода:

'2026-01-05'

Пример

Применим функцию к массиву дат с разными смещениями:

import numpy as np dates = np.array(['2026-01-01', '2026-01-02', '2026-01-03'], dtype='datetime64') offsets = np.array([1, 2, 3]) arr = np.busday_offset(dates, offsets) print(arr)

Результат выполнения кода:

['2026-01-02' '2026-01-05' '2026-01-06']

Пример

Укажем праздничный день (1 января), чтобы он не считался рабочим:

import numpy as np holidays = ['2026-01-01'] arr = np.busday_offset('2025-12-31', 1, holidays=holidays) print(arr)

Результат выполнения кода:

'2026-01-02'

Пример

Изменим маску рабочих дней на шестидневную рабочую неделю (выходной только воскресенье):

import numpy as np # маска: понедельник-суббота работаем (1), воскресенье отдыхаем (0) weekmask = '1111110' arr = np.busday_offset('2026-01-04', 1, weekmask=weekmask) print(arr)

Результат выполнения кода:

'2026-01-05'

Смотрите также

  • функцию is_busday,
    которая проверяет, является ли дата рабочим днём
  • функцию busday_count,
    которая считает количество рабочих дней между двумя датами
  • класс busdaycalendar,
    который позволяет создать объект календаря с пользовательскими настройками
  • функцию datetime_as_string,
    которая преобразует дату и время в строку в заданном формате
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить