在timedelta datetime模块中是否可以跳过指定的日期?

问题描述 投票:-1回答:1

我有这些日期,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)
python datetime timedelta
1个回答
0
投票

如果您仅需要两个日期之间的工作日数,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日是国家法定假日,这是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.