我有两个datetime64对象,a和b,我想确定它们是否在彼此的特定范围内。但是,范围不对称。如果a在-30和120分钟之间(a早于半小时和晚于b两小时),则两者在所需范围内。我的日期时间对象看起来像%m /%d /%Y%H:%M。我试着说:
difference = a - b
if (-30 <= difference <= 120):
#Do stuff
然而,这不起作用,因为差异不是几分钟。我不知道如何进行这种比较。我知道timedelta可以用于日期时间比较,但我不知道如何使用像这样的非对称范围。
感谢。
答案 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