python - 以字符串格式返回一天
问题描述
我正在尝试迭代而不是手动执行代码。我想做的如下:我添加一个日期(字符串格式)作为输入
start=input("Start: mm/dd/yyyy ")
我将此日期设置为等于结束日期:
end=start
然后我运行一些代码
func1(start, end)
所以我的实际代码如下:
start=input("\nStart: mm/dd/yyyy ")
end=start
func1(start, end)
当func1
完成运行时,代码停止。所以我需要再次手动添加一个新日期并执行代码。但是,我想做以下事情:
- 设置结束日期,当开始等于该日期时停止循环;
- 考虑一次通过一天时间回到过去。
因此,例如:如果我的开始日期是06/26/2020
(输入字符串格式),我的结束日期将是06/26/2020
并且我的代码运行。当它完成运行时,我应该回到开始日期06/25/2020
(此时输入字符串格式),即在我原来的开始日期和结束日期前一天06/25/2020
,让代码再次运行。
所以我会
(1)
start = 06/26/2020
end = 06/26/2020
func1(start, end)
(2)
start = 06/25/2020
end = 06/25/2020
func1(start, end)
(3)
start = 06/24/2020
end = 06/24/2020
func1(start, end)
等等。这是一个循环,它应该一直运行到 date( start
) 到达06/01/2020
。
问题是日期是字符串格式,我不知道如何返回一个以通过do
-loop迭代代码。
更新:
如果尝试以下操作:
start ="06/26/2020"
day = datetime.strptime(start,'%m/%d/%Y')
for i in range(5):
start=str(day.strftime("%m/%d/%Y"))
end=start
print (day - timedelta(days=i))
它不会返回一天,但会打印相同的日期。
解决方案
仅作为说明(除了 Rui 的帖子),而不是完整的答案:
from datetime import datetime, timedelta
day_str = '06/26/2020'
day = datetime.strptime(day_str,'%m/%d/%Y')
for i in range(5):
print(day - timedelta(days=i))
编辑:如果您需要循环内的字符串格式,那么您可以尝试:
day_str = '06/26/2020'
day = datetime.strptime(day_str,'%m/%d/%Y')
for i in range(5):
print((day - timedelta(days=i)).strftime('%m/%d/%Y'))
EDIT2:不确定我是否理解正确,但请看:
str_start ="06/26/2020"
print(str_start)
day_start = datetime.strptime(start,'%m/%d/%Y')
day_end = day_start - timedelta(days=1)
str_end = day_end.strftime("%m/%d/%Y")
print(str_end)
推荐阅读
- java - 当我在服务器端的 udp 代码中输入整数时出现什么错误 Clint 返回此错误?
- python - 解析 JSON 文件时出现 KeyError
- html - 如何从角度数组中进行过滤
- python - Django / Apache 随机返回 HTTP 500
- javascript - 在番茄钟项目中暂停/继续
- android - 有没有办法使用 newsapi 在 android studio 中显示完整的新闻文章?
- javascript - 如何重新格式化 d3 中具有键值和键值的另一个值的数据?
- python - 动态定义一个虚拟装饰器
- javascript - 我的网站中有混合内容,但我找不到
- php - 错误:SQLSTATE [42S22]:找不到列:1054 'where 子句'中的未知列'0'