在Python中建立日期范围

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

#1楼

是的,从新发明轮子...。只要在论坛上搜索,您将得到相似如下内容: python

from dateutil import rrule
from datetime import datetime

list(rrule.rrule(rrule.DAILY,count=100,dtstart=datetime.now()))

#2楼

整体而言, 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()

#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()
相关文章
相关标签/搜索