如何解决python上“str”和“datetime.timedelta”不支持的操作数类型?

2024-05-23 19:34:21 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在python上解决-:“str”和“datetime.timedelta”不支持的操作数类型

我正在努力从当前时间中减去-10分钟

参考文献

https://docs.python.org/3/library/datetime.html

尝试的代码

import datetime

current_time = datetime.datetime.strftime(datetime.datetime.today(), '%Y%m%d%H%M%S')
print("현재시간 : ", current_time)  # current_time = 20210813170951

current_time_minute10 = datetime.datetime.today() - datetime.timedelta(minutes=10)
current_time_minute10 = datetime.datetime.strftime(current_time_minute10, '%Y%m%d%H%M%S')
print("현재시간 : ", current_time_minute10)  # current_time_minute10 = 20210813165951

current_time_minute10_2 = current_time_minute10 - datetime.timedelta(minutes=10)
current_time_minute10_2 = datetime.datetime.strftime(current_time_minute10_2,
                                                     '%Y%m%d%H%M%S')
print("현재시간 : ", current_time_minute10_2)  # current_time_minute10_2 = 20210813164951

current_time_minute10_3 = current_time_minute10_2 - datetime.timedelta(minutes=10)
current_time_minute10_3 = datetime.datetime.strftime(current_time_minute10_3,
                                                     '%Y%m%d%H%M%S')
print("현재시간 : ", current_time_minute10_3)  # current_time_minute10_3 = 20210813163951

出现错误消息

  File "[redacted]", line 10, in <module>
    current_time_minute10_2 = current_time_minute10 - datetime.timedelta(minutes=10)
TypeError: unsupported operand type(s) for -: 'str' and 'datetime.timedelta'

我的目标

例如:当前_时间=20210813171700

当前时间分钟10=20210813170700

当前时间分钟10分钟2=20210813165700

当前时间分钟10分钟3=20210813164700

我怎样才能像我的目标一样从当前时间中连续减去10分钟


Tags: https类型目标todaydatetimetime时间current
3条回答

您正在用下一行中的str类型覆盖current_time_minute10的初始datetime对象值

我不知道你为什么想要字符串值。但如果只是用于打印,请尝试以下方法:

current_time_minute10 = datetime.datetime.today() - datetime.timedelta(minutes= 10)
print("현재시간 : ",datetime.datetime.strftime(current_time_minute10 , '%Y%m%d%H%M%S')) # current_time_minute10 = 20210813165951

现在您可以在下一次减法中使用current_time_minute10,操作将在datetimetimedelta对象之间进行,这不会引发TypeError

您可以为字符串使用新的变量,例如current_time_stringcurrent_time

import datetime


current_time_string = datetime.datetime.strftime(datetime.datetime.today() , '%Y%m%d%H%M%S')
print("현재시간 : ",current_time_string) # current_time = 20210813170951





current_time_minute10 = datetime.datetime.today() - datetime.timedelta(minutes= 10) 
current_time_minute10_string = datetime.datetime.strftime(current_time_minute10 , '%Y%m%d%H%M%S')
print("현재시간 : ",current_time_minute10_string) # current_time_minute10 = 20210813165951





current_time_minute10_2 = current_time_minute10 - datetime.timedelta(minutes= 10) 
current_time_minute10_2_string = datetime.datetime.strftime(current_time_minute10_2 , '%Y%m%d%H%M%S')
print("현재시간 : ",current_time_minute10_2_string) # current_time_minute10_2 = 20210813164951





current_time_minute10_3 = current_time_minute10_2 - datetime.timedelta(minutes= 10) 
current_time_minute10_3_string = datetime.datetime.strftime(current_time_minute10_3 , '%Y%m%d%H%M%S')
print("현재시간 : ",current_time_minute10_3_string) # current_time_minute10_3 = 20210813163951

不应将日期时间转换为字符串(例如,使用.strftime

import datetime
         
current_time = datetime.datetime.today()
current_time_minute10 = current_time - datetime.timedelta(minutes= 10) 
current_time_minute10_2 = current_time_minute10 - datetime.timedelta(minutes= 10) 
current_time_minute10_3 = current_time_minute10_2 - datetime.timedelta(minutes= 10) 

print("현재시간 : ",current_time.strftime('%Y%m%d%H%M%S')) # current_time = 20210813170951
print("현재시간 : ",current_time_minute10_2.strftime('%Y%m%d%H%M%S')) # current_time_minute10_2 = 20210813164951
print("현재시간 : ",current_time_minute10_3.strftime('%Y%m%d%H%M%S')) # current_time_minute10_3 = 20210813163951

相关问题 更多 >