Python:解析时间戳并计算毫秒级时间差
我有一串时间戳,格式是"%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 只在内部存储天、秒和微秒。其他单位会被转换成这些单位。