python - 比较两个日期时间对象,看看它们是否相隔最多 2 分钟
问题描述
我有一个 DateTime 对象的列表,我想比较它们中的任何两个是否具有相同的小时和分钟或最多相隔 2 分钟。我使用itertools.combinations( data, 2 )
. 但我被困在比较部分。我不确定如何比较 2 分钟或更长时间,因为如果一个时间戳是 11:58,那么两分钟将是 12:00,这意味着我可以将 2 添加到 11:58,因为它将变为 11:60 而不是 12: 00.
我用这个将 dateTime 对象转换为字符串
dt1 = int((acqList[a].timestamp).time().strftime('%H%M'))
dt2 = int((acqList[b].timestamp).time().strftime('%H%M'))
然后,我做了这个
if dt1 == dt2 or dt1+1 == dt2 or dt2+1 == dt1 or dt1-1 == dt2 or dt2-1 == dt1:
但这会引起1160的关注,不包括最多2分钟的差异
dateTime 对象列表的示例:
2019-10-01 15:37:11+00:00
2019-10-01 15:37:09+00:00
2019-10-01 16:09:06+00:00
2019-10-01 15:24:55+00:00
2019-10-01 16:36:56+00:00
2019-10-01 10:08:39+00:00
解决方案
不要传递给字符串,数值更容易比较。
您可以从两个datetime
对象中比较它们,以每种方式使用此方法
d1 = datetime.now()
d2 = datetime.now() - timedelta(minutes=2)
if fabs((d1 - d2).total_seconds()) <= 120:
print("diff lower than 2m")
以下内容适合但仅以一种方式:
if (d1 - d2) <= timedelta(minutes=2):
print("diff lower than 2m")
要查找日期时间列表是否在 2 分钟间隔内,请检查每个组合是否低于 2 分钟
values = [datetime.now() - timedelta(minutes=randint(0, 2)) for i in range(20)]
combi = combinations(values, 2)
if all([fabs((d1 - d2).total_seconds()) <= 120 for d1, d2 in combi]):
print("All values fit in a 2-min interval")
推荐阅读
- c++ - 使用 VCPKG 在 Visual Studio 上安装 geos
- amazon-web-services - 将位置历史记录 REST API 转换为 AWS 位置 ping 的“云原生”方式是什么?
- c# - .Net Core OData 以不同方式序列化日期时间
- asp.net - 如何编写一个存储过程/函数来返回一个对象列表,该列表还包含一个列表作为其属性给 C#
- go - 与solidity 函数相比,Go ABI.Pack 参数类型应该是什么样的?
- javascript - AdminBSBMaterialDesign-Bootstrap-select data-live-search 最近在 Google Chrome 上没有响应
- javascript - 更新 Redux 状态问题?
- javascript - 创建一个 html 页面以从 pancakeswap 转换自定义加密货币的值
- python - 如何在 Python 中找到具有非明显文件类型的 url 中的图像的文件类型
- r - 从字符日期字段 R 中提取年份和月份