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.
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
If you convert all your dates to datetime.date, you can write the following:
if start <= date <= end:
print("in between")
else:
print("No!")
Method 2
As you are still not satisfied, I have another answer for you. Without using datetime and year.
It just uses built-in tuples and comparing them:
d1 = (3, 28)
d2 = (3, 31)
d3 = (4, 2)
if d1 < d2 < d3:
print("BETWEEN!")
else:
print("NOT!")
You can create tuple like these easily:
day = 16 month = 4 d = (month, day)
Method 3
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!')
Method 4
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')
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