我有这些日期,2020年6月31日和2020年2月4日,我想检查一下它们之间有多少个工作日(即跳过假期和周末)。
我这样做是为了跳过周末,但我仍然对如何跳过假期一无所知;有没有一种方法可以创建一种“黑名单”,因此,如果该差异通过该列表中的任何一天,它都会减去一天。
这是周末的“解决方法”:
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)
如果您仅需要两个日期之间的工作日数,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
但是请记住:圣日是一个不同的故事(一个复杂得多的故事...)。如示例所示,该代码将在4月25日至5月2日之间给您5个工作日。例如,在德国,5月1日是国家法定假日,这是错误的。