Subtract Two DateTime objects – Python
Question:
I have two date time objects like this
a = first date time object
b = second date time object
And then
c = a - b
Now I want to compare c and check if the difference was greater than 3 hours, so I have a time object called three_hours
three_hours = datetime.time(3,0)
if c >= three_hours:
#do stuff
but I get an error saying cannot compare datetime.teimdelta to datetime.time
My question is different as I also want to then compare the subtracted time, not just get the difference!!
How can I convert them to the correct formats so I can check if 3 hours has passed?
Thanks for the help
Answers:
When you subtract two datetime objects in python, you get a datetime.timedelta
object. You can then get the total_seconds()
for that timedelta object and check if that is greater than 3*3600
, which is the number of seconds for 3 hours. Example –
>>> a = datetime.datetime.now()
>>> b = datetime.datetime(2015,8,25,0,0,0,0)
>>> c = a - b
>>> c.total_seconds()
87062.729491
>>> c.total_seconds() > 3*3600
True
You can do this
three_hours = 3600*3 # in seconds
if c.total_seconds() >= three_hours:
# do stuff
You can also just compare to another timedelta object
import datetime
if c >= datetime.timedelta(hours=3):
#do something
I have two date time objects like this
a = first date time object
b = second date time object
And then
c = a - b
Now I want to compare c and check if the difference was greater than 3 hours, so I have a time object called three_hours
three_hours = datetime.time(3,0)
if c >= three_hours:
#do stuff
but I get an error saying cannot compare datetime.teimdelta to datetime.time
My question is different as I also want to then compare the subtracted time, not just get the difference!!
How can I convert them to the correct formats so I can check if 3 hours has passed?
Thanks for the help
When you subtract two datetime objects in python, you get a datetime.timedelta
object. You can then get the total_seconds()
for that timedelta object and check if that is greater than 3*3600
, which is the number of seconds for 3 hours. Example –
>>> a = datetime.datetime.now()
>>> b = datetime.datetime(2015,8,25,0,0,0,0)
>>> c = a - b
>>> c.total_seconds()
87062.729491
>>> c.total_seconds() > 3*3600
True
You can do this
three_hours = 3600*3 # in seconds
if c.total_seconds() >= three_hours:
# do stuff
You can also just compare to another timedelta object
import datetime
if c >= datetime.timedelta(hours=3):
#do something