我的时间如下:08:44:11我会加2小时和4分钟。但我的Python脚本不起作用,出了什么问题?
import sys
from datetime import datetime
from datetime import timedelta
s1 = '08:44:11'
s2 = '02:04:00'
FMT = '%H:%M:%S'
## works
# tdelta = datetime.strptime(s2, FMT) - datetime.strptime(s1, FMT)
## did not work, but why?
# tdelta = datetime.strptime(s1, FMT) + datetime.strptime(s1, FMT)
## works but i got also a year ....
#print datetime.strptime(s1, FMT) + timedelta(seconds=120, FMT)
print tdelta
答案 0 :(得分:1)
添加无效的原因是date
对象表示日历日期,而timedelta
对象表示日期或时间之间的持续时间或差异。
减法是有效的,因为您正在获取两个date
个对象并减去它们以获得timedelta
个对象。例如1月2日 - 1月1日= 1天。
要添加工作,要添加的一个或两个值都需要是timedelta
个对象。例如,1月1日+ 1天= 1月2日或1天+ 2天= 3天。说1月1日+ 1月2日没有多大意义。
在您的示例中,s1
和s2
都是timedelta
个对象(因为它们没有关联的日历日期),因此您可以执行以下操作添加:
td1 = timedelta(hours=8,minutes=44,seconds=11)
td2 = timedelta(hours=2,minutes=4)
td3 = td1 + td2
答案 1 :(得分:0)
因为您要添加日期时间而不是时间。当我用pprints检查时,它显示如下;
datetime.datetime(1900, 1, 1, 2, 4)
这意味着您要设置日期时间为1/1/1990 02:04:00,如果您设置另一个,则它将是具有不同时间的相同日期。因此,您可以减去它,因为它会最终剩余时间,但如果您相互添加日期将如何处理它。