我想写range(start,end)。我有天,ex
<>之前开始日期-结束日期-----------------------2015-05-17 - 2015-05-252015-06-10 - 2015-06-20-----------------------Startdate =[日期时间]。日期(2015,5,17),日期时间。日期(2015、6、10)]Enddate =[日期时间]。日期(2015,5,25),日期时间。日期(2015、6、20)]我需要范围开始日期和结束日期Need_days = startdate[i] - enddate[i]1. datetime。日期(2015,5,25)-日期时间。日期(2015、5、17)2. atetime。日期(2015,6,20),日期时间。日期(2015、6、10)之后我想要范围分离结果------------2015-05-172015-05-182015-05-192015-05-202015-05-212015-05-222015-05-232015-05-242015-05-25结果----------2015-06-102015-06-112015-06-122015-06-132015-06-142015-06-152015-06-162015-06-172015-06-182015-06-192015-06-20之前我怎样才能做到这一点?
您可以将range与timedelta一起使用,使用(end-start).days+1)
获取天数。
from datetime import datetime,timedelta
start,end = datetime(2015, 5, 17), datetime(2015, 5, 25)
dates = [start + timedelta(days=i) for i in range((end-start).days+1)]
for dte in dates:
print(dte.date())
2015-05-17
2015-05-18
2015-05-19
2015-05-20
2015-05-21
2015-05-22
2015-05-23
2015-05-24
2015-05-25
第二个范围的逻辑完全相同。
start,end = datetime(2015, 6, 10), datetime(2015, 6, 20)
dates = [start + timedelta(days=i) for i in range((end-start).days+1)]
for dte in dates:
print(dte.date())
2015-06-10
2015-06-11
2015-06-12
2015-06-13
2015-06-14
2015-06-15
2015-06-16
2015-06-17
2015-06-18
2015-06-19
2015-06-20
如果您必须使用两个列表,请使用zip:
from datetime import date,timedelta
start_dates = [date(2015, 5, 17), date(2015, 6, 10)]
end_dates = [date(2015, 5, 25), date(2015, 6, 20)]
dates = [start + timedelta(days=i) for start, end in zip(start_dates,end_dates) for i in range((end-start).days+1) ]
for dte in dates:
print(dte)
输出:2015-05-17
2015-05-18
2015-05-19
2015-05-20
2015-05-21
2015-05-22
2015-05-23
2015-05-24
2015-05-25
2015-06-10
2015-06-11
2015-06-12
2015-06-13
2015-06-14
2015-06-15
2015-06-16
2015-06-17
2015-06-18
2015-06-19
2015-06-20