两个时间实例之间的差异

时间:2015-07-15 12:42:47

标签: python datetime python-3.x

我必须从Excel文件中读取两列数据,然后计算每对数据之间的差异,并在Excel的新列中写入答案。读取和写入数据没有问题,但我无法相互减去两个datetime.time个对象。

我的数据格式为"16:56:20.09",当我尝试找到其中两个之间的差异时,我收到以下错误:

TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

你能帮我解决这个问题吗?

1 个答案:

答案 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()

* (即忽略更改时钟,闰秒,......)