Python datetime增加了一个时间

时间:2015-04-08 07:00:40

标签: python datetime

我的时间如下: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

2 个答案:

答案 0 :(得分:1)

添加无效的原因是date对象表示日历日期,而timedelta对象表示日期或时间之间的持续时间或差异。

减法是有效的,因为您正在获取两个date个对象并减去它们以获得timedelta个对象。例如1月2日 - 1月1日= 1天。

要添加工作,要添加的一个或两个值都需要是timedelta个对象。例如,1月1日+ 1天= 1月2日或1天+ 2天= 3天。说1月1日+ 1月2日没有多大意义。

在您的示例中,s1s2都是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,如果您设置另一个,则它将是具有不同时间的相同日期。因此,您可以减去它,因为它会最终剩余时间,但如果您相互添加日期将如何处理它。