How to compare two dates?


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.

Asked By: Steven Matthews



Use the datetime method and the operator < and its kin.

>>> from datetime import datetime, timedelta
>>> past = - timedelta(days=1)
>>> present =
>>> past < present
>>> datetime(3000, 1, 1) < present
>>> present - datetime(2000, 4, 4)
datetime.timedelta(4242, 75703, 762105)
Answered By: Fred Foo, 1, 1) <, 1, 2) will return True., 1, 1) -, 1, 2) will return datetime.timedelta(-1)., 1, 1) +, 1, 2) will return datetime.timedelta(1).

see the docs.

Answered By: Daniel Nill

Use time

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")
newdate2 = time.strptime(date2, "%d/%m/%Y")

to convert them to python’s date format. Then, the comparison is obvious:

  • newdate1 > newdate2 will return False
  • newdate1 < newdate2 will return True
Answered By: Guillermo Pereira

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:

import datetime

eight_am = datetime.time( 8,0,0 ) # Time, without a date

And later compare with: > eight_am  

which will return True

Answered By: Luis

For calculating days in two dates difference, can be done like below:

import datetime
import math

issuedate = datetime(2019,5,9)   #calculate the issue datetime
current_date = #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

Answered By: Pallavi Sharma

With python as the easiest language available it is pretty easy to compare dates in python the python operators <, > and == fit wonderfully with datetime objects.
each of them has their own meaning in python:

  • < means the date is earlier than the first
  • > means the date comes later
  • == means the date is same as the first
    So, for your case:
import datetime

date = datetime.datetime(2000, 1, 1) # Replace with whatever you want
now = # You can even find the current date and time using this expression

if date < now:
elif date > now:
# This would print "past"

Answered By: answers opensource
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.