我想建立一個日期列表,從今天開始,而後返回任意天數,例如在個人示例中爲100天。 有沒有比這更好的方法了? html
import datetime a = datetime.datetime.today() numdays = 100 dateList = [] for x in range (0, numdays): dateList.append(a - datetime.timedelta(days = x)) print dateList
是的,從新發明輪子...。只要在論壇上搜索,您將得到相似如下內容: python
from dateutil import rrule from datetime import datetime list(rrule.rrule(rrule.DAILY,count=100,dtstart=datetime.now()))
整體而言, Pandas
很是適合用於時間序列,而且直接支持日期範圍。 app
例如pd.date_range()
: ide
import pandas as pd datelist = pd.date_range(pd.datetime.today(), periods=100).tolist()
它還具備許多使生活更輕鬆的選擇。 例如,若是您只想要工做日,則只需交換bdate_range
。 優化
請參閱日期範圍文檔 ui
此外,它徹底支持pytz時區,而且能夠平穩地跨越春季/秋季DST偏移。 spa
OP編輯: code
若是您須要實際的python日期時間,而不是Pandas時間戳: htm
pd.date_range(end = pd.datetime.today(), periods = 100).to_pydatetime().tolist()
這使用「 end」參數來匹配原始問題,可是若是您想降序使用日期: 文檔
pd.date_range(pd.datetime.today(), periods=100).to_pydatetime().tolist()
獲取指定開始日期和結束日期之間的日期範圍(針對時間和空間複雜度進行了優化):
import datetime start = datetime.datetime.strptime("21-06-2014", "%d-%m-%Y") end = datetime.datetime.strptime("07-07-2014", "%d-%m-%Y") date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end-start).days)] for date in date_generated: print date.strftime("%d-%m-%Y")
Matplotlib相關
from matplotlib.dates import drange import datetime base = datetime.date.today() end = base + datetime.timedelta(days=100) delta = datetime.timedelta(days=1) l = drange(base, end, delta)
import datetime def date_generator(): cur = base = datetime.date.today() end = base + datetime.timedelta(days=100) delta = datetime.timedelta(days=1) while(end>base): base = base+delta print base date_generator()