在 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

原文由 Thomas Browne 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 377
2 个回答

稍微好一点…

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

原文由 S.Lott 发布,翻译遵循 CC BY-SA 4.0 许可协议

Pandas 非常适合一般时间序列,并且直接支持日期范围。

例如 pd.date_range()

 import pandas as pd
from datetime import datetime

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

它也有很多选择,让生活更轻松。例如,如果您只想要工作日,您只需交换 bdate_range

请参阅 日期范围文档

此外,它完全支持 pytz 时区,并且可以顺利跨越春秋夏令时转换。

由 OP 编辑:

如果您需要实际的 python 日期时间,而不是 Pandas 时间戳:

 import pandas as pd
from datetime import datetime

pd.date_range(end = datetime.today(), periods = 100).to_pydatetime().tolist()

#OR

pd.date_range(start="2018-09-09",end="2020-02-02")

这使用“end”参数来匹配原始问题,但如果您想要降序日期:

 pd.date_range(datetime.today(), periods=100).to_pydatetime().tolist()

原文由 fantabolous 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题