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

Rob*_*ray 7 python time datetime timedelta python-3.x

我试图转换两个"持续时间",但我目前收到的是TypeError由于一个是一个datetime.timedelta和一个是datetime.time:

TypeError: unorderable types: datetime.time() <= datetime.timedelta()
Run Code Online (Sandbox Code Playgroud)

将a转换datetime.time为a 的有效方法是datetime.timedelta什么?

我已经检查了文档,并且没有内置的方法来在这两种类型之间进行转换.

Mar*_*ers 15

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

datetime.combine(date.min, timeobj) - datetime.min
Run Code Online (Sandbox Code Playgroud)

演示:

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

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


Rob*_*ray 5

这是我发现的一种解决方案,尽管不一定有效:

import datetime
x = datetime.timedelta(hours=x.hour, minutes=x.minute, seconds=x.second, microseconds=x.microsecond)
Run Code Online (Sandbox Code Playgroud)

x一个datetime.time对象。