Python:解析时间戳并计算毫秒级时间差

4 投票
2 回答
7014 浏览
提问于 2025-04-16 11:13

我有一串时间戳,格式是"%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 个回答

2

你试过 datetime.strptime() 这个函数吗?它可以把一个字符串格式的日期时间读进来,然后转换成一个日期时间对象。

接着,你可以使用 datetime.timedelta() 来计算时间差,单位是毫秒。

相关文档在这里:http://docs.python.org/library/datetime.html#strftime-strptime-behavior

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 只在内部存储天、秒和微秒。其他单位会被转换成这些单位。

撰写回答