Alan Jones
Alan Jones

Reputation: 462

Compare current date with future date in Python

I am trying to compare the current date in the following format (ddmmyyyy) to a future date in the following format (ddmmyyyy)

I put them in that format so i can easily compare them as integers. However, it keeps failing the if then test.

from datetime import datetime, timedelta

StartDay=datetime.today()  # Get current date in this format 2020-04-28 19:59:16.901897

EndDay=StartDay+timedelta(60) # I want to be able to add 60 days to StartDay 

print(EndDay.strftime('%d%m%Y')) # Print EndDay as an integer 27062020

EndDay=EndDay.strftime('%d%m%Y') # Convert EndDay to make it look like an integer

StartDay=datetime.today().strftime('%d%m%Y') # Convert the StartDay to make it look like an integer

if int(StartDay)>int(EndDay):
    print('Game Over!')
else:
    pass

What I want to achieve is the an integer value for a date, such that the future date will always be greater than past/current date if that makes sense.

Upvotes: 0

Views: 2088

Answers (3)

Siddharth Agarwal
Siddharth Agarwal

Reputation: 158

Keep startdate and enddate as 'datetime' and do the following:

from datetime import datetime, timedelta
StartDay=datetime.today()
EndDay=StartDay+timedelta(60) 
delta = (StartDay - EndDay).days
if delta > 0:
    print('Game Over!')
else:
    print('Something else')

This should do the trick

Upvotes: 1

Daweo
Daweo

Reputation: 36360

datetime.datetime might be easily converted into datetime.date and then compared consider following example:

from datetime import datetime, timedelta
StartDay = datetime.today()
EndDay = StartDay + timedelta(60)
StartDate = StartDay.date()  # datetime.date(2020, 4, 28)
EndDate = EndDay.date()  # datetime.date(2020, 6, 27)
print(StartDate < EndDate)  # True

Note that you might also compare datetime.datetime directly with datetime.datetime but this take in account also units smaller than days, so if you have two datetime.datetimes say d1 and d2 with same year-month-day but different hours, then result of d1 < d2 might be different from d1.date() < d2.date()

Upvotes: 1

FObersteiner
FObersteiner

Reputation: 25544

you can directly compare datetime objects, no need for a detour here:

from datetime import datetime
t0, t1 = datetime(2020,1,1), datetime(2020,1,2)

t0>t1
Out[6]: False

t0<t1
Out[7]: True

t1-t0
Out[8]: datetime.timedelta(days=1)

Upvotes: 2

Related Questions