The Question :
409 people think this question is useful
How would I compare two dates to see which is later, using Python?
For example, I want to check if the current date is past the last date in this list I am creating, of holiday dates, so that it will send an email automatically, telling the admin to update the holiday.txt file.
The Question Comments :
The Answer 1
522 people think this answer is useful
datetime method and the operator
< and its kin.
>>> from datetime import datetime, timedelta
>>> past = datetime.now() - timedelta(days=1)
>>> present = datetime.now()
>>> past < present
>>> datetime(3000, 1, 1) < present
>>> present - datetime(2000, 4, 4)
datetime.timedelta(4242, 75703, 762105)
The Answer 2
79 people think this answer is useful
Let’s say you have the initial dates as strings like these:
date1 = "31/12/2015"
date2 = "01/01/2016"
You can do the following:
newdate1 = time.strptime(date1, "%d/%m/%Y") and
newdate2 = time.strptime(date2, "%d/%m/%Y") to convert them to python’s date format. Then, the comparison is obvious:
newdate1 > newdate2 will return
newdate1 < newdate2 will return
The Answer 3
41 people think this answer is useful
datetime.date(2011, 1, 1) < datetime.date(2011, 1, 2) will return
datetime.date(2011, 1, 1) - datetime.date(2011, 1, 2) will return
datetime.date(2011, 1, 1) + datetime.date(2011, 1, 2) will return
see the docs.
The Answer 4
4 people think this answer is useful
Other answers using
datetime and comparisons also work for time only, without a date.
For example, to check if right now it is more or less than 8:00 a.m., we can use:
eight_am = datetime.time( 8,0,0 ) # Time, without a date
And later compare with:
datetime.datetime.now().time() > eight_am
which will return
The Answer 5
-2 people think this answer is useful
For calculating days in two dates difference, can be done like below:
issuedate = datetime(2019,5,9) #calculate the issue datetime
current_date = datetime.datetime.now() #calculate the current datetime
diff_date = current_date - issuedate #//calculate the date difference with time also
amount = fine #you want change
if diff_date.total_seconds() > 0.0: #its matching your condition
days = math.ceil(diff_date.total_seconds()/86400) #calculate days (in
one day 86400 seconds)
deductable_amount = round(amount,2)*days #calclulated fine for all days
Becuase if one second is more with the due date then we have to charge