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.
datetime method and the operator
< and its kin.
>>> from datetime import datetime, timedelta >>> past = datetime.now() - timedelta(days=1) >>> present = datetime.now() >>> past < present True >>> datetime(3000, 1, 1) < present False >>> present - datetime(2000, 4, 4) datetime.timedelta(4242, 75703, 762105)
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.
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 > newdate2will return
newdate1 < newdate2will return
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:
datetime.datetime.now().time() > eight_am
which will return
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 = 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
With python as the easiest language available it is pretty easy to compare dates in python the python operators
== 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
import datetime date = datetime.datetime(2000, 1, 1) # Replace with whatever you want now = datetime.datetime.now() # You can even find the current date and time using this expression if date < now: print('past') elif date > now: print('future') else: print('present') # This would print "past"