python 日期范围列表元素
python date range list elements
我想做范围(开始,结束)。我有几天,ex
start date - end date
-----------------------
2015-05-17 - 2015-05-25
2015-06-10 - 2015-06-20
-----------------------
startdate = [datetime.date(2015, 5, 17), datetime.date(2015, 6, 10)]
enddate = [datetime.date(2015, 5, 25), datetime.date(2015, 6, 20)]
i need range startdate and enddate
need_days = startdate[i] - enddate[i]
1. datetime.date(2015, 5, 25) - datetime.date(2015, 5, 17)
2. atetime.date(2015, 6, 20), datetime.date(2015, 6, 10)
after i want range separate
result
------------
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
result
----------
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
我怎样才能做到这一点?请帮助我,在此先感谢。
您可以在 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
我想做范围(开始,结束)。我有几天,ex
start date - end date ----------------------- 2015-05-17 - 2015-05-25 2015-06-10 - 2015-06-20 ----------------------- startdate = [datetime.date(2015, 5, 17), datetime.date(2015, 6, 10)] enddate = [datetime.date(2015, 5, 25), datetime.date(2015, 6, 20)] i need range startdate and enddate need_days = startdate[i] - enddate[i] 1. datetime.date(2015, 5, 25) - datetime.date(2015, 5, 17) 2. atetime.date(2015, 6, 20), datetime.date(2015, 6, 10) after i want range separate result ------------ 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 result ---------- 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
我怎样才能做到这一点?请帮助我,在此先感谢。
您可以在 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