I am trying to convert two "durations", however I am currently receiving a TypeError
due to one being a datetime.timedelta
and one being a datetime.time
:
TypeError: unorderable types: datetime.time() <= datetime.timedelta()
What is an efficient way to convert a datetime.time
to a datetime.timedelta
?
I have checked the docs and there is no built-in method for conversion between these two types.
datetime.time()
is not a duration , it is a point in a day. If you want to interpret it as a duration, then convert it to a duration since midnight:
datetime.combine(date.min, timeobj) - datetime.min
Demo:
>>> from datetime import datetime, date, time
>>> timeobj = time(12, 45)
>>> datetime.combine(date.min, timeobj) - datetime.min
datetime.timedelta(0, 45900)
You may need to examine how you get the datetime.time()
object in the first place though, perhaps there is a shorter path to a timedelta()
from the input data you have? Don't use datetime.time.strptime()
for durations, for example.
Here's one solution I've found, though it's not necessarily efficient:
import datetime
x = datetime.timedelta(hours=x.hour, minutes=x.minute, seconds=x.second, microseconds=x.microsecond)
Where x
is a datetime.time
object.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.