我想建立一个日期列表,从今天开始,而后返回任意天数,例如在个人示例中为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()