所以我试图借用Sandeep的答案在Python中创建一个日期范围:datetime -在Python中创建日期范围-并使用列表推导来获得两个给定datetime.dates
之间的datetime.dates
列表。目前,它是按日历日进行的。我想做的是修改它,A)一次两天(跳过一天)和B)一次三天(跳过两天)。我相信这应该是一个修改范围-我只是不能得到它的权利!
Import datetime
Start_date=datetime.date(2020,1,1)
End_date=datetime.date.today()-datetime.timedelta(days=1)
dd = [start_date + datetime.timedelta(days=x) for x in range((end_date-start_date).days + 1)]
print(dd)
提出:
dd = [start_date + datetime.timedelta(days=x) for x in range((end_date-start_date).days + 1,datetime.timedelta(days=3))]
不起作用,给出TypeError: 'datetime. 'Timedelta '对象不能解释为整数错误。有人能帮忙吗?
juanpa指出的错误。Arrivllgaga user:5014455表示在列表推导中您正在处理整数而不是日期时间。日期对象,因此将其保持为整数。
解决方案在列表中的日期之间跳过N天:
N=3
dd = [start_date + datetime.timedelta(days=x) for x in range(0,(end_date-start_date).days + 1,N)]
dd
您可以使用date.toordinal()
和date.fromordinal()
:
from datetime import date, timedelta
start_date = date.today()
end_date = start_date + timedelta(days=15)
skip = 3
dd = [date.fromordinal(d) for d in range(start_date.toordinal(), end_date.toordinal(), skip)]