我想创建一个日期列表,从今天开始,然后返回任意天数,例如在我的示例中为100天。 有没有比这更好的方法了?
import datetime
a = datetime.datetime.today()
numdays = 100
dateList = []
for x in range (0, numdays):
dateList.append(a - datetime.timedelta(days = x))
print dateList
#1楼
是的,重新发明轮子...。只要在论坛上搜索,您将获得类似以下内容:
from dateutil import rrule
from datetime import datetime
list(rrule.rrule(rrule.DAILY,count=100,dtstart=datetime.now()))
#2楼
总体而言, Pandas
非常适合用于时间序列,并且直接支持日期范围。
例如pd.date_range()
:
import pandas as pd
datelist = pd.date_range(pd.datetime.today(), periods=100).tolist()
它还具有许多使生活更轻松的选择。 例如,如果您只想要工作日,则只需交换bdate_range
。
请参阅日期范围文档
此外,它完全支持pytz时区,并且可以平稳地跨越春季/秋季DST偏移。
OP编辑:
如果您需要实际的python日期时间,而不是Pandas时间戳:
pd.date_range(end = pd.datetime.today(), periods = 100).to_pydatetime().tolist()
这使用“ end”参数来匹配原始问题,但是如果您想降序使用日期:
pd.date_range(pd.datetime.today(), periods=100).to_pydatetime().tolist()
#3楼
获取指定开始日期和结束日期之间的日期范围(针对时间和空间复杂度进行了优化):
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")
#4楼
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)
#5楼
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()
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3207328