我今天有个简单的问题。我想得到两个日期之间的差异,并检查差异是否在5分钟左右。
我发现了一个问题,就是找出区别,去检查一下。
我把同一天和一个有几分钟差异的日期做了比较,结果显示-1天的差别?对我毫无意思。
如果你想的话,你自己试试吧。
比较日期:
Date1: 2021-05-15 00:38:57.244000
Date2: 2021-05-15 02:40:42.245693印刷上的区别是:
Diff: -1 day, 21:58:14.998307为什么是-1天?差别不应该只是两个小时吗?那么,获得两个日期之间的差异的最好方法是什么呢?正如我所说的,,我想检查两者之间的差异是否更小(或等于)5分钟。,如果每次不同的日期,这是怎么可能的?
重要信息:的日期总是不同的,因为我检查帐户创建日期。
我使用了这段代码来实现不同的效果:
diff = date1 - date2发布于 2021-05-15 01:54:31
这个问题可以通过排序两个日期对象来解决,这样差异比较总是返回一个正数。然后,您可以使用timedelta对象来检查差异是否小于5分钟。
from datetime import datetime, timedelta
# Define dates as datetime objects
Date1 = datetime.fromisoformat("2021-05-15 00:38:57.244000")
Date2 = datetime.fromisoformat("2021-05-15 02:40:42.245693")
# Define 5 minutes as a timedelta object
five_minute_duration = timedelta(minutes=5)通过从较新日期减去旧日期来比较这两个日期。结果将是一个timedelta对象。
diff = Date2 - Date1如果您不确定哪个日期对象是老的和年轻的,您可以对它们进行排序。这将使比较稳定,并防止意外的负值时间增量。
dates_sorted = sorted([Date2, Date1])
diff = dates_sorted[1] - dates_sorted[0]以小时为单位。在这个例子中,持续时间是2.029.几个小时。
diff.total_seconds() / (60 * 60)检查差异是否较小或等于5分钟的持续时间。
if diff <= five_minute_duration:
print("Yes")
else:
print("No")发布于 2021-05-15 01:51:08
您可以在减除操作之前进行比较。示例如下所示。
from datetime import datetime
dt1 = datetime(2020, 4, 19, 12, 20)
dt2 = datetime(2020, 4, 21, 15, 2)
def get_date_diff(date1, date2):
diff = date2 - date1 if date1 < date2 else date1 - date2
return diff
def test():
print (get_date_diff(dt1, dt2))
test()发布于 2021-05-15 02:02:56
创建一个上限和下限,方法是为允许的差值创建两个具有正值和负值的时间差
lower = timedelta(minutes=-5)
upper = timedelta(minutes=5)然后检查日期时间之间的差异是否在这些范围内。
lower < date1 - date2 < upper这种方法的优点是,如果进行多次比较,只需创建一次lower和upper,就不必对日期时间进行排序。
https://stackoverflow.com/questions/67542368
复制相似问题