在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()
相關文章
相關標籤/搜索