首页 > 解决方案 > 在循环python中将deltatime添加到每个日期

问题描述

嘿伙计们,我试图将时间增量添加到循环范围内的每个日期,但最终只将时间增量添加到循环中的第一个日期,代码如下:

import datatime
import time
from datetime import timedelta, date


td= datetime.timedelta(days=7)

for d in daterange(date(2019, 1, 1,), date(2019, 1, 5)):
   print(d+td)


>>>2019-01-08
>>>2019-01-09
>>>2019-01-10
>>>2019-01-11

为什么添加不适用于该范围内的日期,解决方案是什么?

标签: pythondatetime

解决方案


虽然很难说出您的原始代码有什么问题,但您是否正在寻找类似的东西,使用给定的步骤迭代日期/日期时间?

import datetime


def date_range(start, end, step: datetime.timedelta):
    while start < end:
        yield start
        start += step


for d in date_range(
    start=datetime.date(2019, 1, 1),
    end=datetime.date(2019, 2, 9),
    step=datetime.timedelta(days=7),
):
    print(d)

输出

2019-01-01
2019-01-08
2019-01-15
2019-01-22
2019-01-29
2019-02-05

推荐阅读