由于 datetime.time
类的对象可能没有定义其 tzinfo
属性,所以它不支持对象相减,就像它不支持对象比较一样。
将时间与时间进行比较,其中在时间轴上 a 在 b 之前时,认为 a 小于 b。如果一个可比较对象是 naive,而另一个是 aware,则会引发 TypeError。如果两个可比较对象都是 aware 的,并且具有相同的 tzinfo 属性,则忽略公共的 tzinfo 属性,比较基本时间。如果两个可比较对象都是 aware 的,并且具有不同的 tzinfo 属性,则首先通过减去它们的 UTC 偏移量(从 self.utcoffset() 获得)来调整这些对象。为了防止混合类型比较回退到默认比较方式(即对象地址),当将时间对象与不同类型的对象进行比较时,除非比较使用 == 或 !=,否则会引发 TypeError。后一种情况分别返回 False 或 True。
你应该使用 datetime.datetime
,它包含日期和时间。
如果这两个时间都是指同一天,你可以告诉 Python 今天的日期是什么,使用 date.today()
,然后使用 datetime.combine
将日期与时间组合。
现在,你有了 datetime 对象,可以进行减法运算,它将返回一个 datetime.timedelta 实例。使用方法 total_seconds()
返回秒数(它是一个包含毫秒信息的浮点数)。因此,乘以 106 可以得到微秒。
from datetime import datetime, date, time
x = time(9, 30, 30, 0)
y = time(9, 30, 31, 100000)
diff = datetime.combine(date.today(), y) - datetime.combine(date.today(), x)
print diff.total_seconds() * (10 ** 6)
你也可以使用时间增量:
from datetime import timedelta
x = timedelta(hours=9, minutes=30, seconds=30)
y = timedelta(hours=9, minutes=30, seconds=31, microseconds=100000)
print (y - x).total_seconds() * (10 ** 6)