日期减法:事件是否发生?

Dates subtraction: has the event occurred or not?

如果我有每天的日期时间 - 如何找出事件是否已经发生,通过减去 datetime.now()

让我们每天在15:35开会吧。今天 John 来得早 - 12:45,但 Alex 迟到了 2 小时。和 15 分钟。 (到达 17:40)。

meet_dt = datetime(year=2015, month=8, day=19, hour=15, minute=35)
john_dt = datetime(year=2015, month=8, day=19, hour=12, minute=45)
alex_dt = datetime(year=2015, month=8, day=19, hour=17, minute=40)

print(meat_dt - john_dt) # came before > 2:50:00
print(meat_dt - alex_dt) # came after  > -1 day, 21:55:00

如果我少带走大日期 - 那么一切都很好,但相反我收到 -1 天,21:55:00 为什么不 -2:15:00,多糟糕的一天?

因为时间增量是标准化的

timedelta 的除天字段以外的所有部分始终为非负数,as described in the documentation

顺便说一下,如果你想先看看发生了什么,就不要做这个减法。直接与<比较即可:

if then < datetime.datetime.now():
    # then is in the past