从:
http://docs.python.org/py3k/library/datetime.html#timedelta- objects
timedelta对象代表持续时间,即两个日期或时间之间的差。
那么,为什么我会出错:
>>> from datetime import datetime, timedelta, time >>> datetime.now() + timedelta(hours=12) datetime.datetime(2012, 9, 17, 6, 24, 9, 635862) >>> datetime.now().date() + timedelta(hours=12) datetime.date(2012, 9, 16) >>> datetime.now().time() + timedelta(hours=12) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'
datetime.time对象不支持除了用datetime.timedelta秒。
datetime.time
datetime.timedelta
虽然有一个自然的定义,时钟算术。您可以这样计算:
import datetime as dt now = dt.datetime.now() delta = dt.timedelta(hours = 12) t = now.time() print(t) # 12:39:11.039864 print((dt.datetime.combine(dt.date(1,1,1),t) + delta).time()) # 00:39:11.039864
dt.datetime.combine(...)将datetime.timet提升到一个datetime.datetime对象,然后添加增量,然后将结果回落到一个datetime.time对象。
dt.datetime.combine(...)
t
datetime.datetime