在python中迭代日期[重复]

Posted

技术标签:

【中文标题】在python中迭代日期[重复]【英文标题】:Iterating over date in python [duplicate] 【发布时间】:2014-05-19 09:07:04 【问题描述】:

这是我的代码:

MYDATE = []
start_date = "2011-01-01"
stop_date = "2013-05-01"

start = start_date.strftime("%Y-%m-%d")
stop = stop_date.strftime("%Y-%m-%d")
for r in .......:
    MYDATE.append((r,r))

如何迭代 start_datestop_date 之间的日期?

【问题讨论】:

使用什么间隔?年、月、日、秒?我认为需要更多信息。 我只需在 while 循环中的开始日期加上 1 个月,例如while newdate < stop:我不知道是否有简单的方法来添加月份,但我确实看到了这个:***.com/questions/4130922/… 查看这个老问题:***.com/questions/1060279/… 你如何设法在字符串对象上使用strftime() 也相关:How to increment datetime month in python 【参考方案1】:

这取决于您希望如何迭代。按天?几个月?使用timedelta 将解决您的问题。

from datetime import datetime

start_date = "2011-01-01"
stop_date = "2013-05-01"

start = datetime.strptime(start_date, "%Y-%m-%d")
stop = datetime.strptime(stop_date, "%Y-%m-%d")

from datetime import timedelta
while start < stop:
    start = start + timedelta(days=1)  # increase day one by one

另一种历经数月的迭代方法是使用relativedelta

from dateutil.relativedelta import relativedelta
start = start + relativedelta(months = +1)

【讨论】:

【参考方案2】:

timedelta 呢?

start = datetime.now()
end = start + timedelta(days=10)

tmp = start

while tmp < end:
    print tmp
    tmp = tmp + timedelta(days=1) # replace the interval at will

打印

2014-04-07 10:42:14.943790
2014-04-08 10:42:14.943790
2014-04-09 10:42:14.943790
2014-04-10 10:42:14.943790
2014-04-11 10:42:14.943790
2014-04-12 10:42:14.943790
2014-04-13 10:42:14.943790
2014-04-14 10:42:14.943790
2014-04-15 10:42:14.943790
2014-04-16 10:42:14.943790

【讨论】:

这不能回答问题,因为所需的频率是每月一次,根据文档,timedelta 不支持月份

以上是关于在python中迭代日期[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python迭代日期列表

Python中文件夹的日期[重复]

按周python迭代带有日期列的pd df

如何在python中从一个日期访问另一个日期的csv数据[重复]

如何在 Python 中获取当前位置的日期和时间 [重复]

从Python日期中提取两位数的月份和日期[重复]