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

时间:2017-03-06 20:59:17

标签: python datetime

我有两个datetime64对象,a和b,我想确定它们是否在彼此的特定范围内。但是,范围不对称。如果a在-30和120分钟之间(a早于半小时和晚于b两小时),则两者在所需范围内。我的日期时间对象看起来像%m /%d /%Y%H:%M。我试着说:

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

然而,这不起作用,因为差异不是几分钟。我不知道如何进行这种比较。我知道timedelta可以用于日期时间比较,但我不知道如何使用像这样的非对称范围。

感谢。

3 个答案:

答案 0 :(得分:1)

timedelta difference与另外两个timedelta进行比较:

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

答案 1 :(得分:0)

我认为,您可以在Time difference in seconds from 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

答案 2 :(得分: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