在Python 3.4中将datetime.time转换为datetime.timedelta

时间:2016-02-06 13:35:10

标签: python python-3.x datetime time timedelta

我正在尝试转换两个&#34;持续时间&#34;但我现在收到TypeError,因为一个是datetime.timedelta而另一个是datetime.time:< / p>

TypeError: unorderable types: datetime.time() <= datetime.timedelta()

datetime.time转换为datetime.timedelta

的有效方法是什么?

我检查了docs,并且没有内置的方法可以在这两种类型之间进行转换。

2 个答案:

答案 0 :(得分:14)

datetime.time() 不是持续时间,它是一天中的一个点。如果您想将其解释为持续时间,请将其转换为自午夜以来的持续时间:

datetime.combine(date.min, timeobj) - datetime.min

演示:

>>> from datetime import datetime, date, time
>>> timeobj = time(12, 45)
>>> datetime.combine(date.min, timeobj) - datetime.min
datetime.timedelta(0, 45900)

您可能需要首先检查如何获取datetime.time()对象,或许从您输入的数据到timedelta()的路径较短?例如,不要使用datetime.time.strptime()作为持续时间。

答案 1 :(得分:4)

这是我找到的一个解决方案,虽然它并不一定有效:

import datetime
x = datetime.timedelta(hours=x.hour, minutes=x.minute, seconds=x.second, microseconds=x.microsecond)

其中xdatetime.time个对象。