如何判断一个日期是否在两个日期之间?

67 投票
4 回答
148220 浏览
提问于 2025-04-16 14:35

我有以下代码:

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)

撰写回答