如何解决以日期的形式返回一天的日期
我正在尝试迭代执行代码,而不是手动执行代码。 我想做的如下:我将日期(字符串格式)添加为输入
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)
,依此类推。
这是一个循环,它将一直运行到日期(start
)达到06/01/2020
为止。
问题在于日期是字符串格式,我不知道如何通过do
循环来迭代代码。
更新:
如果尝试以下操作:
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))
它不会回溯一天,但会打印相同的日期。
解决方法
您可以解析字符串格式的时间并将其转换为python中的datetime格式,然后可以自由比较两个datetime变量并终止循环。
from datetime import datetime
time_str = '06/26/2020'
# t is datetime type
t = datetime.strptime(time_str,'%m/%d/%Y')
# output: False
print(t < datetime.now())
EDIT2:
关于您的UPDATE,它应该显示为:
2020-06-26 00:00:00
2020-06-25 00:00:00
2020-06-24 00:00:00
2020-06-23 00:00:00
2020-06-22 00:00:00
但是它不会更改start
和end
变量的值。所以我建议这样做:
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('start:',start)
print('end:',end)
# move day
day = day - timedelta(days=1)
不确定这是否是您想要的。
,仅作为示例(除了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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。