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

时间:2011-02-04 13:49:37

标签: 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

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

2 个答案:

答案 0 :(得分: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]

结果:

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

以毫秒为单位输出差异:

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

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

答案 1 :(得分:2)

您是否尝试过datetime.strptime()功能?它将在日期时间内读取为字符串并将其转换为日期时间对象。

然后,您可以使用datetime.timedelta()计算差异(以毫秒为单位)。

此处的文档:http://docs.python.org/library/datetime.html#strftime-strptime-behavior