两个时间之间有多少小时?(-:“ datetime.time”和“ datetime.time”的不受支持的操作数类型)

时间:2018-07-12 05:21:27

标签: python datetime

我试图通过float的类型来计算10:49到16:38之间的小时数。

import datetime
t1 = datetime.time(10,49,00)
t2 = datetime.time(16,38,00)
t = (t2 - t1).hours

4 个答案:

答案 0 :(得分:2)

这是一个简单的错字。您在呼叫.hours,但实际上关键字是.hour

尝试使用t = t2.hour - t1.hour

来自Python解释器:

>>> t1 = datetime.time(10,49,00)
>>> t2 = datetime.time(16,38,00)
>>> t = t2.hour - t1.hour
>>> t
6

但是您知道,如果您想使用.hour关键字,则使用浮点数是没有用的,因为它将始终返回x.0,因为无论您决定减去多少小时,您都会永远不会得到不是.0

的浮点数

答案 1 :(得分:2)

您可以这样计算:

from datetime import datetime, timedelta

t1 = datetime.strptime("10:49:00", "%H:%M:%S")
t2 = datetime.strptime("16:38:00", "%H:%M:%S")
t = (t2 - t1)
print t.total_seconds() / 3600

print timedelta(days=0, seconds=t.seconds, microseconds=t.microseconds)
print ceil(t.total_seconds() / 3600)

输出:

5.81666666667
5:49:00
6.0

从timedelta获取小时:

x = timedelta(days=0, seconds=t.seconds, microseconds=t.microseconds)
print x.seconds//3600

输出为5。

答案 2 :(得分:2)

data不支持减法运算符。由于您已经将小时和分钟作为整数,因此您不妨自己计算一下差异。

datetime.time

这将输出:

print(((16 * 60 + 38) - (10 * 60 + 49)) / 60)

答案 3 :(得分:0)

通过使用datetime.datetime并添加一个虚拟日期(例如,今年的第一天),可以得到与提案非常相似的解决方案。此外,您可能只要求输入daysseconds

import datetime
t1 = datetime.datetime(2018,1,1,10,49,00)
t2 = datetime.datetime(2018,1,1,16,38,00)

difference = (t2 - t1)
difference.days * 24 + difference.seconds // 3600

> 5