我必须从Excel文件中读取两列数据,然后计算每对数据之间的差异,并在Excel的新列中写入答案。读取和写入数据没有问题,但我无法从彼此减去两个datetime.time
对象。
我的数据格式为"16:56:20.09"
,当我试图找到两者之间的差异时,我得到以下错误:
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
你能帮我解决这个问题吗? 你不能减去time
实例,因为它们没有明确的顺序;12点和13点有什么区别?一个小时?如果我现在告诉你我指的是昨天12点和明天13点呢?因此出现错误:
>>> from datetime import date, time, datetime
>>> t1 = time(12, 00)
>>> t2 = time(13, 00)
>>> t1 - t2
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
t1 - t2
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
您需要知道时间发生在的哪一天来计算差值。您需要将它们与适当的date
组合起来,将它们转换为datetime
对象:
>>> dt1 = datetime.combine(date(2015, 7, 14), t1)
>>> dt2 = datetime.combine(date(2015, 7, 16), t2)
现在你可以减去它们:
>>> dt2 - dt1
datetime.timedelta(2, 3600) # two days, 3,600 seconds
如果它们在同一天(或者你假设它们在同一天),通常是哪一天并不重要,所以你可以这样做,例如
>>> datetime.combine(date.today(), t2) - datetime.combine(date.today(), t1)
datetime.timedelta(0, 3600) # one hour
* (即。忽略时钟变化,闰秒,…)