【问题标题】:Difference between two time instances两个时间实例之间的差异
【发布时间】:2015-07-15 12:42:47
【问题描述】:

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

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

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

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

【问题讨论】:

标签: python datetime python-3.x


【解决方案1】:

您不能减去 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'

您需要知道时间发生在哪一天来计算差异。您需要通过combining them 使用适当的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

* (即忽略时钟变化、闰秒……)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多