Convert datetime.time into datetime.timedelta in Python 3.4

后端 未结 2 1817
执念已碎
执念已碎 2020-12-06 17:51

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

相关标签:
2条回答
  • 2020-12-06 18:10

    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.

    0 讨论(0)
  • 2020-12-06 18:25

    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.

    0 讨论(0)
提交回复
热议问题