【问题标题】:Iterating over date in python [duplicate]在python中迭代日期[重复]
【发布时间】: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 之间的日期?

【问题讨论】:

标签: 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 不支持月份
    猜你喜欢
    • 2020-11-25
    • 1970-01-01
    • 2023-03-15
    • 2020-02-13
    • 2017-09-04
    • 2016-05-09
    • 2017-12-14
    • 2021-06-18
    • 2023-03-31
    相关资源
    最近更新 更多