2010-01-25 84 views
3

我有2個日期,我正嘗試構建一個plot的x軸標籤。枚舉日期範圍

因此,我需要一種方法來取2個日期時間對象,即2009-10-12 00:00:002009-10-20 00:00:00併產生像列表所以:

["2009-10-12", "2009-10-13", "2009-10-14", ..., "2009-10-19", "2009-10-20"] 

我應該用什麼庫來提供幫助?我有一個感覺datetime模塊和timedelta功能將有所幫助相當多。

我可以包含代碼,如果它是有意義的,但我有一種感覺,有一些內置到python庫允許這很容易。我似乎只是想念它。

+3

http://stackoverflow.com/questions/1950098/does-python-have-any-for-loop-equivalent- not-foreach – bernie 2010-01-25 22:34:16

+2

精確重複:http://stackoverflow.com/questions/1060279/iterating-through-a-range-of-dates-in-python – 2010-01-25 23:01:02

回答

3
import datetime 

first=datetime.date(2009,10,12) 
last=datetime.date(2009,10,20) 
adate=first 
dates=[] 
while adate<=last: 
    dates.append(adate) 
    adate+=datetime.timedelta(1) 
print(dates) 

或者,列表理解的戀人:

len=(last-first).days 
dates=[first+datetime.timedelta(n) for n in range(len+1)] 
+0

謝謝:我真的很喜歡理解:) – 2010-01-26 01:14:11

0
from datetime import date, timedelta 

a, b = date(1010, 10, 12), date(1010, 10, 20) 
times = [a + timedelta(x) for x in xrange((b-a).days)] 

# If you want to format them: 
times = [x.strftime('%Y-%m-%d') for x in times] 
+0

這是與datetime.date對象,但datetime.datetime應該工作相同。 – 2010-01-25 22:37:04