Nov-21-2023, 11:04 AM
I put the years in, just for fun:
# if you want to repeat, reset file seek to zero: log.seek(0) log = StringIO( """<150>2022 Nov 7 07:38:33 DrayTek: Local User (MAC=B0-8C-75-C0-FF-8F): 172.16.91.7:57422 -> 17.57.172.11:443 (TCP) <150>2023 Nov 7 07:38:43 DrayTek: Local User (MAC=B0-8C-75-C0-FF-8F): 172.16.91.7:57423 -> 17.57.172.11:443 (TCP) <150>2023 Nov 7 08:38:33 DrayTek: Local User (MAC=B0-8C-75-C0-FF-8F): 172.16.91.7:57424 -> 17.57.13.65:443 (TCP) <150>2024 Nov 8 07:38:33 DrayTek: Local User (MAC=B0-8C-75-C0-FF-8F): 172.16.91.7:57425 -> 17.57.13.65:443 (TCP)""" )Then just do what deanhystad said:
prev = None for line in log: dt = datetime.strptime(line[5:25], "%Y %b %d %H:%M:%S") if prev is not None: print(dt - prev) prev = dt # need this to repeat reading the log log.seek(0)
Output:365 days, 0:00:10
0:59:50
366 days, 23:00:00