【问题标题】:How to check less than 3 minutes of data using timestamp to check using python?如何使用时间戳检查少于 3 分钟的数据以使用 python 进行检查?
【发布时间】:2022-08-18 19:39:36
【问题描述】:

我有字典数据,我想根据时间戳检查这个数据活动

如果在 3 分钟内更新,如何确认检索时间很好,但如果超过 3 分钟,它将打印结果警报数据

{\'Activity\': \'password changed\', \'Time\': \'08/17/2022 08:37:15\', \'UserName\': \'client\'}
{\'Activity\': \'password changed\', \'Time\': \'08/17/2022 08:36:30\', \'UserName\': \'client\'}
{\'Activity\': \'password changed\', \'Time\': \'08/17/2022 08:35:11\', \'UserName\': \'client\'}
{\'Activity\': \'password changed\', \'Time\': \'08/17/2022 08:34:20\', \'UserName\': \'client\'}
{\'Activity\': \'password changed\', \'Time\': \'08/17/2022 08:33:20\', \'UserName\': \'client\'}
{\'Activity\': \'password changed\', \'Time\': \'07/17/2022 10:37:15\', \'UserName\': \'client\'}

代码:

from datetime import datetime, timedelta
now = datetime.now()-timedelta(minutes=3)
current_time = now.strftime(\'%m/%d/%Y %H:%M:%S\')
print(current_time)
for o in op:
    temp = o[\'Time\']
    if current_time < temp:
        print(\"fine\")
    else:
        print(\"alert\")

标签: python


【解决方案1】:

根据我对您问题的理解,问题与您的时间数据的基于文本的性质有关。

这是一些代码,用于提取从每个时间戳中经过的秒数

op1 = {'Activity': 'password changed', 'Time': '08/17/2022 08:34:20', 'UserName': 'client'}
op2 = {'Activity': 'password changed', 'Time': '08/17/2022 08:33:20', 'UserName': 'client'}
op3 = {'Activity': 'password changed', 'Time': '07/17/2022 10:37:15', 'UserName': 'client'}

op = [op1, op2, op3]

store_time = []

for o in op:
    temp = o['Time'].split(' ')
    elapsed = temp[1].split(':')  # target Time value
    hours = int(elapsed[0])
    minutes = int(elapsed[1])
    seconds = int(elapsed[2])
    total_time = hours * 3600 + minutes * 60 + seconds  # add seconds from original time
    store_time.append(total_time)

之后,您可以存储成对的数据并使用简单的 if 语句进行比较

if store_time[1] - store_time[0] < 180:  # 3 minutes into seconds
    print('Alert')
else:
    print('this is fine')

【讨论】:

  • 如何获取最后 3 分钟完整数据的警报结果?我的更新后时间戳是错误的
【解决方案2】:

查看以下内容:

from datetime import datetime, timedelta

ops = [
    {'Activity': 'password changed', 'Time': '08/17/2022 08:37:15', 'UserName': 'client'},
    {'Activity': 'password changed', 'Time': '08/17/2022 08:36:30', 'UserName': 'client'},
    {'Activity': 'password changed', 'Time': '08/17/2022 08:35:11', 'UserName': 'client'},
    {'Activity': 'password changed', 'Time': '08/17/2022 08:34:20', 'UserName': 'client'},
    {'Activity': 'password changed', 'Time': '08/17/2022 08:33:20', 'UserName': 'client'},
    {'Activity': 'password changed', 'Time': '07/17/2022 10:37:15', 'UserName': 'client'}
    ]
three_mins = datetime.now() - timedelta(minutes=3)
# for testing purposes
# three_mins = datetime.strptime("08/17/2022 08:34:19", "%m/%d/%Y %H:%M:%S")

for op in ops:
    t = datetime.strptime(op["Time"], "%m/%d/%Y %H:%M:%S")
    if three_mins <= t:
        print(t.strftime("%m/%d/%Y %H:%M:%S") + " is fine")
    else:
        print("ALERT: " + t.strftime("%m/%d/%Y %H:%M:%S") + " is older than " +\
            three_mins.strftime("%m/%d/%Y %H:%M:%S") + ". DO SOMETHING!!!!")

您所犯的错误是在if 块中进行比较之前,您没有在for 循环中将op["Time"] 转换为datetime 对象。

如果您将three_mins 设置为上面的测试值,则输出如下:

08/17/2022 08:37:15 is fine
08/17/2022 08:36:30 is fine
08/17/2022 08:35:11 is fine
08/17/2022 08:34:20 is fine
ALERT: 08/17/2022 08:33:20 is older than 08/17/2022 08:34:19. DO SOMETHING!!!!
ALERT: 07/17/2022 10:37:15 is older than 08/17/2022 08:34:19. DO SOMETHING!!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    相关资源
    最近更新 更多