我必须从Excel文件中读取两列数据,然后计算每对数据之间的差异,并在Excel的新列中写入答案。读取和写入数据没有问题,但我无法相互减去两个datetime.time
个对象。
我的数据格式为"16:56:20.09"
,当我尝试找到其中两个之间的差异时,我收到以下错误:
TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
你能帮我解决这个问题吗?
答案 0 :(得分:2)
你不能减去time
个实例,因为它们没有明确的排序; 12.00和13.00之间有什么区别?一小时?如果我现在告诉你我的意思是昨天12.00和明天的13.00怎么办?因此错误:
>>> 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'
您需要知道在上发生的时间,以计算差异。您需要使用datetime
date
将>>> 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
现在你可以减去它们:
import unittest
class Test(unittest.TestCase):
def testFailure(self):
self.assertFalse(True)
def testError(self):
0 / 0
def testPass(self):
self.assertTrue(True)
import sys
sys.argv.append("-v")
unittest.main()
如果他们在同一天(或者你假设他们是),那么哪个日通常*无关紧要,所以你可以这样做。
import unittest
class Test(unittest.TestCase):
def testFailure(self):
self.assertFalse(True)
def testError(self):
0 / 0
def testPass(self):
self.assertTrue(True)
import sys
sys.argv.append("-v")
unittest.main()
* (即忽略更改时钟,闰秒,......)