我有一个“%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中有效地计算每行之间的时间差(毫秒)。
答案 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