2013-01-14 51 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 –