Python:解析时间戳并以毫秒为单位计算时间差

Lou*_*fre 4 python datetime

我有一个"%H:%M:%S"格式的时间戳列表.例如

  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
Run Code Online (Sandbox Code Playgroud)

我需要在python中有效地计算每行之间的时间差(毫秒).

Rei*_*cke 7

%H:%M:%S.%f是解析时间时要使用的格式字符串.请参阅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]
Run Code Online (Sandbox Code Playgroud)

结果:

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
Run Code Online (Sandbox Code Playgroud)

以毫秒为单位输出差异:

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

请注意,timedelta仅在内部存储天,秒和微秒.其他单位已转换.