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

2024-05-19 13:33:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试转换两个“持续时间”,但由于一个是datetime.timedelta,另一个是datetime.time,我当前正在接收TypeError

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

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

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


Tags: 方法docs类型datetimetime内置timedeltatypes
2条回答

我找到了一个解决方案,虽然不一定有效:

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()

相关问题 更多 >