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.
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Use the 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)
Method 2
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 > newdate2will returnFalsenewdate1 < newdate2will returnTrue
Method 3
datetime.date(2011, 1, 1) < datetime.date(2011, 1, 2) will return True.
datetime.date(2011, 1, 1) - datetime.date(2011, 1, 2) will return datetime.timedelta(-1).
datetime.date(2011, 1, 1) + datetime.date(2011, 1, 2) will return datetime.timedelta(1).
see the docs.
Method 4
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 True
Method 5
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 = 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"
Method 6
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
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0