Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: Parsing timestamps and calculating time differences in milliseconds

I have a list of timestamps in "%H:%M:%S" format. For example

  09:50:08.650000
  09:50:08.665000
  09:50:08.820000
  09:50:08.877000
  09:50:09.897000
  09:50:09.907000
  09:50:09.953000
  09:50:10.662000
  09:50:10.662000

I need to compute efficiently in python the time difference in milliseconds between each line.

like image 341
LouisChiffre Avatar asked Jan 20 '23 14:01

LouisChiffre


1 Answers

%H:%M:%S.%f is the format string to be used when parsing the times. See http://docs.python.org/library/datetime.html#strftime-strptime-behavior

import datetime

times = """
09:50:08.650000
09:50:08.665000
09:50:08.820000
09:50:08.877000
09:50:09.897000
09:50:09.907000
09:50:09.953000
09:50:10.662000
09:50:10.662000
""".split()

# parse all times
times = [datetime.datetime.strptime(x, "%H:%M:%S.%f") for x in times]
for i in range(len(times) - 1):
    # compute timedelta between current and next time in the list
    print times[i + 1] - times[i]

The result:

0:00:00.015000
0:00:00.155000
0:00:00.057000
0:00:01.020000
0:00:00.010000
0:00:00.046000
0:00:00.709000
0:00:00

To output the difference in milliseconds:

delta = times[i + 1] - times[i]
print ((delta.days * 24 * 60 * 60 + delta.seconds) * 1000 + delta.microseconds / 1000)

Note that timedelta only stores days, seconds and microseconds internally. Other units are converted.

like image 151
Reiner Gerecke Avatar answered May 08 '23 15:05

Reiner Gerecke