如何检查两个日期时间是否在特定范围内?

5

我有两个datetime64对象,a和b,我想确定它们是否在彼此的某个范围内。然而,这个范围不是对称的。如果a在b的-30到120分钟之间(a比b早半小时到晚两小时之间),那么它们就在所需范围内。我的datetime对象看起来像%m/%d/%Y %H:%M。我尝试过以下方式:

difference = a - b
if (-30 <= difference <= 120):
    #Do stuff

然而,这并不起作用,因为差异不是以分钟为单位。我不确定如何执行此比较。我知道可以使用timedelta进行日期时间比较,但我不知道如何将其与这样一个不对称的范围一起使用。
谢谢。

您有一种方法可以将某个时间添加到日期时间中吗?还是固定的? - Joseph Chotard
3个回答

4

比较 timedeltadifference 与其他两个 timedelta

from datetime import timedelta

if timedelta(minutes=-30) <= difference <= timedelta(minutes=120):

0

你也可以将所有值转换为秒,然后比较这些值:

difference_in_seconds = difference.total_seconds()
thirty_minutes_in_seconds = 1800
one_hundred_and_twenty_minutes_in_seconds = 7200

if thirty_minutes_in_seconds <= difference_in_seconds <= one_hundred_and_twenty_minutes_in_seconds: 
    # Do stuff

0

我认为你可以在从numpy.timedelta64计算时间差的秒数的答案基础上进行扩展。

>>> import numpy as np
>>> a = np.datetime64('2012-05-01T01:00:00.000000+0000')
>>> b = np.datetime64('2012-05-15T01:00:00.000000+0000')
>>> diff=b-a
>>> diff.item().total_seconds()
1209600.0
>>> minutes = 1209600.0/60
>>> minutes
20160.0
>>> -30 <= minutes <= 120
False

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接