'How to tell if a date is between two other dates?
I have the following codes:
if date in (start, end):
print('in between')
else:
print('No!')
date, start and end are all variables with the format of 1/1. What should I do to have it print out the right result? i tried date as 10/2, start as 3/14 and end as 11/7 and it's print 'No!', which means it's not running right. I guess have to format them to a date format and then compare them.
Solution 1:[1]
If you convert all your dates to datetime.date, you can write the following:
if start <= date <= end:
print("in between")
else:
print("No!")
Solution 2:[2]
Use datetime.date:
http://docs.python.org/library/datetime.html#datetime.date
< operator is overloaded specially for you.
date1 < date2 - date1 is considered less than date2 when date1 precedes date2 in time.
>>> from datetime import date
>>> d1 = date(2011, 3, 28)
>>> d2 = date(2011, 3, 22)
>>> d3 = date(2011, 4, 3)
>>> d2 < d1 < d3
True
Or in your prgram:
from datetime import date
d1 = date(2011, 3, 28)
d2 = date(2011, 3, 22)
d3 = date(2011, 4, 3)
if d2 < d1 < d3:
print('in between')
else:
print('No!')
Solution 3:[3]
from datetime import datetime
date_format = "%m/%d/%Y"
a = datetime.strptime('8/18/2008', date_format)
b = datetime.strptime('9/26/2007', date_format) # Date to be checked
c = datetime.strptime('9/25/2008', date_format)
d = datetime.strptime('8/18/2008', date_format) #Date entered here should always be the same as 'a'
delta1 = b - a
delta2 = c - b
delta3 = d - a
if delta1.days >= delta3.days and delta2.days >= delta3.days:
print('In between')
else:
print('Not in between')
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Shedrack |
| Solution 2 | Shedrack |
| Solution 3 | Shedrack |
