在Python中向工作日日历添加日期
我正在尝试将日期添加到工作日日历中。不知何故,我应该收到日期为2015年4月28日,但使用我的代码,我得到的是2015年4月24日。我用的是假日日历,只有周一到周五的工作日。代码如下所示:在Python中向工作日日历添加日期,python,datetime,Python,Datetime,我正在尝试将日期添加到工作日日历中。不知何故,我应该收到日期为2015年4月28日,但使用我的代码,我得到的是2015年4月24日。我用的是假日日历,只有周一到周五的工作日。代码如下所示: from datetime import datetime, timedelta, date import holidays def getNextBusinessDays(date, num): for i in range(0, num): date = getNextB
from datetime import datetime, timedelta, date
import holidays
def getNextBusinessDays(date, num):
for i in range(0, num):
date = getNextBusinessDay(date)
return date
def getNextBusinessDay(fromDate):
Holiday = holidays.DE()
nextBuinessDate = datetime.strptime(fromDate, "%Y-%m-%d")
nextBuinessDate = nextBuinessDate + timedelta(days=1)
if date.weekday(nextBuinessDate) not in range(0, 5) and nextBuinessDate not in Holiday:
nextBuinessDate = nextBuinessDate + timedelta(days=1)
if date.weekday(nextBuinessDate) not in range(0, 5) and nextBuinessDate not in Holiday:
nextBuinessDate = nextBuinessDate + timedelta(days=1)
return nextBuinessDate.strftime('%Y-%m-%d')
if __name__ == '__main__':
dateshift = getNextBusinessDays('2015-02-01', 60)
print(dateshift)
这是最终的工作解决方案
import datetime as dt
import holidays
Holiday = holidays.DE()
def getNextBusinessDay(date, n):
for i in range(n):
nextday = date1 + dt.timedelta(days=1)
while nextday.weekday() > 4 or nextday in Holiday:
nextday += dt.timedelta(days=1)
date = nextday
return date
#test
datetest = dt.datetime.strptime('02-04-15', '%d-%m-%y')
print(getNextBusinessDay(datetest,1))
你能发布完整的密码吗?@Veltro,谢谢。只要做一个代码不起作用的简单测试用例:今天是星期四,明天是假期。在这种情况下,您获得的下一个工作日将返回周日作为下一个工作日。@TomaszPlaskota,很好的观点,不知何故假期不起作用,但我不明白为什么?它们工作正常,只是该特定函数中的逻辑有缺陷。你只需要提前两天检查,而你真的应该检查无限的天数,直到你找到合适的工作日。