Question or problem about Python programming:
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.
How to solve the problem:
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)
If you convert all your dates to
datetime.date, you can write the following:
if start <= date <= end: print "in between" else: print "No!"
< 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!'
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'