在python中生成给定范围内的所有日期
我有两个字符串变量,其中包含yyyy-mm-dd格式的日期,如下所示:
date1 = '2011-05-03'
date2 = '2011-05-10'
我想编写生成范围为date1到date2的所有日期的代码。 这怎么可以在Python中完成?
日期可以像数字一样相互比较,并且可以使用datetime.timedelta对象进行与日期相关的数学运算。 没有理由在这里使用dateutil,并且没有必要硬编码'范围(9)'的迭代次数。 这与您处理普通旧数字的方式非常相似。
>>> import datetime
>>> date1 = '2011-05-03'
>>> date2 = '2011-05-10'
>>> start = datetime.datetime.strptime(date1, '%Y-%m-%d')
>>> end = datetime.datetime.strptime(date2, '%Y-%m-%d')
>>> step = datetime.timedelta(days=1)
>>> while start <= end:
... print start.date()
... start += step
...
2011-05-03
2011-05-04
2011-05-05
2011-05-06
2011-05-07
2011-05-08
2011-05-09
2011-05-10
>>>
from dateutil import rrule, parser
date1 = '2011-05-03'
date2 = '2011-05-10'
dates = list(rrule.rrule(rrule.DAILY,
dtstart=parser.parse(date1),
until=parser.parse(date2)))
print dates
由于dateutil不是标准库,因此您必须将其作为单独的软件包进行安装。 有关格式的更多详细信息,请参阅文档(特别是dayfirst
和yearfirst
开关)。
大熊猫对于时间序列总的来说很棒,并且对日期范围和日期解析(它是自动的)都有直接的支持。
import pandas as pd
date1 = '2011-05-03'
date2 = '2011-05-10'
mydates = pd.date_range(date1, date2).tolist()
它也有很多选项让生活更轻松。 例如,如果您只需要工作日,则只需交换bdate_range
。
请参阅http://pandas.pydata.org/pandas-docs/stable/timeseries.html#generating-ranges-of-timestamps
链接地址: http://www.djcxy.com/p/18475.html