【问题标题】:Enumerate a DateRange枚举一个日期范围
【发布时间】:2010-01-25 22:27:24
【问题描述】:

我有 2 个日期,我正在尝试构建绘图 x 轴的标签。

因此,我需要一种方法来获取 2 个 datetime 对象,即 2009-10-12 00:00:002009-10-20 00:00:00 并生成如下列表:

["2009-10-12", "2009-10-13", "2009-10-14", ..., "2009-10-19", "2009-10-20"]

我应该使用哪些库来提供帮助?我感觉 datetime 模块和 timedelta 功能会有所帮助。

如果有意义的话,我可以包含代码,但我感觉 Python 库中内置了一些东西,可以让这变得非常简单。我似乎只是想念它。

【问题讨论】:

标签: python datetime


【解决方案1】:
import datetime

first=datetime.date(2009,10,12)
last=datetime.date(2009,10,20)
adate=first
dates=[]
while adate<=last:
    dates.append(adate)
    adate+=datetime.timedelta(1)
print(dates)

或者,对于列表理解的爱好者:

len=(last-first).days
dates=[first+datetime.timedelta(n) for n in range(len+1)]

【讨论】:

  • 谢谢:我真的很喜欢理解 :)
【解决方案2】:
from datetime import date, timedelta

a, b = date(1010, 10, 12), date(1010, 10, 20)
times = [a + timedelta(x) for x in xrange((b-a).days)]

# If you want to format them:
times = [x.strftime('%Y-%m-%d') for x in times]

【讨论】:

  • 这适用于 datetime.date 对象,但 datetime.datetime 应该是一样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多