python - 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 的值。
解决方案
正如其他人所说,您会不断更新day
值start
。此外,您的代码可以简化一点。
例如:
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
推荐阅读
- ruby - 是否可以单独将 Puma 作为网络服务器运行?
- linux - 由于地址已在使用中,dovecot 无法启动
- r - 如何从 Dataframe(HR 和 CI)中绘制森林图
- flutter - Dart StreamController:30 秒后测试超时
- disable - 如何禁用 MaterialAlertDialogBuilder 中的按钮
- css - 有身高的父母:自己没有孩子的身高
- c++ - 如果返回类型不同,如何从多个基中覆盖相同的方法名称?
- php - 如何在孩子中使用hasMany,其中有belongsTo
- node.js - 无法使用 npm start 启动本机项目
- python-3.x - 无法使用 Tkinter 在第二个窗口上放置按钮