Есть ли способ пропустить указанные дни в модуле timedelta datetime? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть эти даты, 31/06/2020 и 04/02/2020, и я хочу проверить, сколько рабочих дней между ними (то есть пропускаются выходные и праздничные дни).

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

Это исправление выходного дня:

date_input = '31/6/2020'
date_end = '4/2/2020'
start = datetime.strptime(date_input, "%Y-%m-%d").date()
end = datetime.strptime(date_end, "%Y-%m-%d").date()
Gap = (end - start).days
N_weeks = Gap / 7
weekends = (math.trunc(N_weeks)) * 2
final_result = str((Gap) - weekends)

1 Ответ

0 голосов
/ 02 мая 2020

, если вам просто нужно количество рабочих дней между двумя датами, pandas может помочь:

import pandas as pd

start, end = '2020-04-25', '2020-05-02'
bd_range = pd.date_range(start, end, freq=pd.tseries.offsets.BDay())

print(f"number of business days between {start} and {end}: {bd_range.size}")
# number of business days between 2020-05-02 and 2020-05-09: 5

Но имейте в виду: праздники - это другая история (гораздо более сложная ... ). Как показывает пример, код даст вам 5 рабочих дней с 25 апреля по 2 мая. Это было бы неправильно, например, здесь, в Германии, где 1 мая является национальным праздником.

...