在Python中创建日期范围

2024-04-25 23:09:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 方法inimport示例列表fortodaydatetime
3条回答

稍微好一点。。。

base = datetime.datetime.today()
date_list = [base - datetime.timedelta(days=x) for x in range(numdays)]

^{}通常非常适合时间序列,并且直接支持日期范围。

例如^{}

import pandas as pd
datelist = pd.date_range(pd.datetime.today(), periods=100).tolist()

它还有很多选择让生活更轻松。例如,如果您只需要工作日,您只需在^{}中进行交换。

date range documentation

此外,它完全支持pytz时区,可以顺利跨越春秋夏令时轮班。

按操作编辑:

如果您需要实际的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()

获取指定开始日期和结束日期之间的日期范围(针对时间和空间复杂性进行了优化):

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")

相关问题 更多 >

    热门问题