在 Python 3.4 中将 datetime.time 转换为 datetime.timedelta
Convert datetime.time into datetime.timedelta in Python 3.4
我正在尝试转换两个 "durations",但是我目前收到一个 TypeError
,因为一个是 datetime.timedelta
,一个是 datetime.time
:
TypeError: unorderable types: datetime.time() <= datetime.timedelta()
将 datetime.time
转换为 datetime.timedelta
的有效方法是什么?
我检查了docs,没有内置的方法可以在这两种类型之间进行转换。
这是我找到的一种解决方案,但不一定有效:
import datetime
x = datetime.timedelta(hours=x.hour, minutes=x.minute, seconds=x.second, microseconds=x.microsecond)
其中 x
是一个 datetime.time
对象。
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()
作为持续时间。
我正在尝试转换两个 "durations",但是我目前收到一个 TypeError
,因为一个是 datetime.timedelta
,一个是 datetime.time
:
TypeError: unorderable types: datetime.time() <= datetime.timedelta()
将 datetime.time
转换为 datetime.timedelta
的有效方法是什么?
我检查了docs,没有内置的方法可以在这两种类型之间进行转换。
这是我找到的一种解决方案,但不一定有效:
import datetime
x = datetime.timedelta(hours=x.hour, minutes=x.minute, seconds=x.second, microseconds=x.microsecond)
其中 x
是一个 datetime.time
对象。
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()
作为持续时间。