Misbah Asif
Misbah Asif

Reputation: 35

How to compare timedelta object with time object in python

I had one time object I used timedelta to add 5 hours and 30 minutes to it now I have one timedelta object

new_time2 = timedelta(hours=starttime_time.hour+5, minutes=starttime_time.minute+30)
print(new_time2, type(new_time2))
>>>15:30:00 <class 'datetime.timedelta'>

Now I have another time object

input_time = "09:30:00"
a = datetime.strptime(input_time, '%H:%M:%S').time()
print(a, type(a))
>>>09:30:00 <class 'datetime.time'>

So I want to compare these two times but when I am doing this I am getting a TypeError

print(new_time2 >= a)

TypeError: '>=' not supported between instances of 'datetime.timedelta' and 'datetime.time'
09:30:00 <class 'datetime.time'>

So is there any other way I can compare these two times. Thanks in advance.

Upvotes: 2

Views: 1007

Answers (3)

Dan
Dan

Reputation: 16

I use this function to add a minute to a time object:

def addMinute(timeObject):
    # Python doesn't allow a time object to use timedelta
    # This function takes a time object converts it into a datetime object, adds 1 minute and returns a time object
    est_now_dt = datetime.now(est)
    #newDt = est_now_dt.replace(hour = timeObject.hour, minute = timeObject.minute, second = 0, microsecond = 0).time()
    newDt = est_now_dt.replace(hour = timeObject.hour, minute = timeObject.minute, second = 0, microsecond = 0)
    newDt = newDt + timedelta(minutes =1)
    newDt = newDt.time()
    return newDt

Upvotes: 0

babis21
babis21

Reputation: 1881

You can convert the time instance to timedelta:

>>> from datetime import timedelta
>>> e = timedelta(hours=a.hour, minutes=a.minute, seconds=a.second)
>>> print(e, type(e))
9:30:00 <class 'datetime.timedelta'>

then you can compare:

>>> print(new_time2 >= e)
True

Upvotes: 1

Bhakta Raghavan
Bhakta Raghavan

Reputation: 724

you created a timedelta object and not a datetime object.. let me give you an example :

>>> from datetime import datetime, timedelta
>>>
>>> t1 = datetime.now()
>>> t1
datetime.datetime(2022, 1, 11, 13, 34, 37, 537863)
>>>
>>> tenMinsDelta = timedelta(minutes=10)
>>>
>>> t1PlusTen = t1 + tenMinsDelta
>>>
>>>
>>> type(t1PlusTen)
<class 'datetime.datetime'>
>>>
>>> type(tenMinsDelta)
<class 'datetime.timedelta'>

So, instead of doing:

new_time2 = timedelta(hours=starttime_time.hour+5, minutes=starttime_time.minute+30)

you must:

delta = timedelta(hours=5, minutes=30)

new_time = starttime_time + delta

Upvotes: 0

Related Questions