如何判断一个日期是否在两个日期之间?
我有以下代码:
if date in (start, end):
print('in between')
else:
print('No!')
date、start 和 end 都是格式为 1/1 的变量。我该怎么做才能让它输出正确的结果?我试过把 date 设置为 10/2,start 设置为 3/14,end 设置为 11/7,但它输出的是 'No!',这意味着运行不对。我想我得把它们格式化成日期格式,然后再进行比较。
4 个回答
40
使用 datetime.date
:
http://docs.python.org/library/datetime.html#datetime.date
<
运算符是专门为你重载的。
当 date1 < date2
时,表示如果 date1 的时间在 date2 之前,date1 就被认为小于 date2。
>>> from datetime import date
>>> d1 = date(2011, 3, 28)
>>> d2 = date(2011, 3, 22)
>>> d3 = date(2011, 4, 3)
>>> d2 < d1 < d3
True
或者在你的程序中:
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!')
145
如果你把所有的日期都转换成 datetime.date
这种格式,你就可以写下面的代码:
if start <= date <= end:
print("in between")
else:
print("No!")
57
既然你还不满意,我再给你一个答案。这次不使用日期时间和年份。
这个方法只用到了内置的元组和比较它们:
d1 = (3, 28)
d2 = (3, 31)
d3 = (4, 2)
if d1 < d2 < d3:
print("BETWEEN!")
else:
print("NOT!")
你可以很简单地创建这样的元组:
day = 16
month = 4
d = (month, day)