2013-01-14 50 views
2

可能重复:
Iterating through a range of dates in Python获取日期为阵列

我,我传递的开始日期和结束日期的方法。最终结果是我希望将开始日期和结束日期之间的所有日期列为一个列表。例如,如果开始日期是'2013-01-01',结束日期是'2013-01-04',那么['2013-01-01','2013-01-02','2013-01-03 ','2013-01-04']应该返回。我可以做下面的事情。但是,不知道是否有一个简单的方法,我还没有考虑

year = int(startdate.split('-')[0]) 
month = int(startdate.split('-')[1]) 
day = int(startdate.split('-')[2]) 
+0

你问七个问题,但没有接受任何答案? –

+0

可能的重复:http://stackoverflow.com/q/14288498/1907098 – Volatility

回答

1

这应该工作:

from datetime import datetime 
from datetime import timedelta 

d1 = datetime.strptime('2013-01-01', '%Y-%m-%d') 
d2 = datetime.strptime('2013-01-04', '%Y-%m-%d') 

[d1 + timedelta(days=x) for x in range(0, (d2 - d1).days + 1)] 
2
>>> from datetime import datetime, timedelta 
>>> starttime = datetime.strptime('2013-01-01', '%Y-%m-%d') 
>>> endtime = datetime.strptime('2013-01-04', '%Y-%m-%d') 
>>> [starttime + timedelta(days=i) for i in range((endtime - starttime).days + 1)] 
[datetime.datetime(2013, 1, 1, 0, 0), datetime.datetime(2013, 1, 2, 0, 0), datetime.datetime(2013, 1, 3, 0, 0), datetime.datetime(2013, 1, 4, 0, 0)] 
>>> list(map(lambda x: x.strftime('%Y-%m-%d'), _)) 
['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04'] 
0

我会去:

from dateutil import parser as dateparser 
from dateutil.rrule import rrule, DAILY 

sd = dateparser.parse('2013-01-01') 
ed = dateparser.parse('2013-01-04') 

dates = (rrule(DAILY, sd, until=ed)) 
fmt = '{:%Y-%m-%d}' 
print map(fmt.format, dates) 
# ['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04'] 
+0

虽然这在Python stdlib之外引入了一个依赖关系,但是如果处理DT –