Автоматизация, Программирование

Календарь на языке Python

Время прочтения: 3 мин.

В начале написания кода импортируем библиотеку pandas:

Далее импортируем из нее метод определения последнего рабочего дня месяца:

Также нам понадобится модуль datetime:

Для того, чтобы найти последний рабочий день месяца, сначала вам необходимо указать в каком месяце мы его ищем. Для этого вводим переменную month.

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

Нужно понимать, что дата будет меняться каждый день.

Если это какой-то другой месяц, то их можно ввести вручную через input, либо подставляя переменные (при определении через цикл нескольких месяцев):

В данном случае задается какая-либо дата нужного месяца, например, отчетная.

где yyyy – соответственно год (2020), mm – месяц (2), dd – день (23) # C праздником!

Обратите внимание, что если у вас, как в данном случае, 2-й месяц, то подставляем 2, а не 02! Аналогично с днями!

Теперь можно найти последний рабочий день (lastBusinessDayMonth) месяца через метод BMonthEnd:

Команда rollforward будет искать последний рабочий день месяца «вперед» от даты month, поэтому, если month попадет на последний календарный день месяца, она найдет последний рабочий день уже в следующем месяце. Чтобы этого избежать и если отчет строится обычно в конце месяца, можно от переменной dd отнимать, например, 7 дней:

Также, необходимо учесть, что метод BMonthEnd определит последний рабочий день месяца для US calendar, т.е. календарь США. В большинстве случаев даты, попавшие на сб и вск будут отброшены корректно, исключением могут быть переносы праздничных дней в нашем производственном календаре.

В некоторых случаях может быть необходимо найти количество рабочих дней между определенными датами. Для этого можно воспользоваться библиотеками USFederalHolidayCalendar и CustomBusinessDay:

Далее переменной присвоим рабочие дни:

Для построения списка рабочих дней между двумя датами хх и yy выполняем следующую операцию:

Для определения количества рабочих дней между этими датами делаем следующее:

Здесь также необходимо учитывать, что USFederalHolidayCalendar имеет собственные праздничные дни, поэтому, для нашего производственного календаря необходимо внести коррективу праздников США и России.

Советуем почитать