在Python中创建日期范围

倖福魔咒の 提交于 2020-03-20 20:09:04

3 月,跳不动了?>>>

我想创建一个日期列表,从今天开始,然后返回任意天数,例如在我的示例中为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()
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!