在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_date
和 stop_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中迭代日期[重复]的主要内容,如果未能解决你的问题,请参考以下文章