我试图通过float
的类型来计算10:49到16:38之间的小时数。
import datetime
t1 = datetime.time(10,49,00)
t2 = datetime.time(16,38,00)
t = (t2 - t1).hours
答案 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
并添加一个虚拟日期(例如,今年的第一天),可以得到与提案非常相似的解决方案。此外,您可能只要求输入days
和seconds
。
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