首页 > 解决方案 > for 循环中的日期未更新

问题描述

我在这个for循环中遇到了一些困难:

start="06/26/2020"

for i in range(5):
    
    day = datetime.strptime(start,'%m/%d/%Y')
    start=str(day.strftime("%m/%d/%Y"))
    end=start
    
    print("Day:", day, "start: ", start, "end: ", end)
    
    d=timedelta(days=i)
    next= day - d
    
    day= next

我想要实现的是时光倒流。所以从 开始06/26/2020,设置一个时间范围,我需要回到 直到06/22/2020。代码似乎工作正常,但 start 无法更新,所以每次我从06/26/2020(循环外)开始。你能告诉我如何解决吗?

我需要有这样的东西:

Start: 06/26/2020 End:  06/26/2020
Start: 06/25/2020 End: 06/25/2020
Start: 06/24/2020 End: 06/24/2020
Start: 06/23/2020 End: 06/23/2020
Start: 06/22/2020 End: 06/22/2020

我认为问题出在循环中,因为它不会更新 start 的值。

标签: pythonfor-loop

解决方案


正如其他人所说,您会不断更新daystart。此外,您的代码可以简化一点。

例如:

from datetime import datetime, timedelta

start = "06/26/2020"
day = datetime.strptime(start, '%m/%d/%Y')

for date in (day - timedelta(n) for n in range(5)):
    d = date.strftime("%m/%d/%Y")
    print("Start: ", d, "End: ", d)

这输出:

Start:  06/26/2020 End:  06/26/2020
Start:  06/25/2020 End:  06/25/2020
Start:  06/24/2020 End:  06/24/2020
Start:  06/23/2020 End:  06/23/2020
Start:  06/22/2020 End:  06/22/2020

推荐阅读