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

Python:解析时间戳并以毫秒为单位计算时间差,python,datetime,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高效地计算每行之间的时间差(以毫秒为单位)。您是否尝试过datetime.strtime()函数?它将以

我有“%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高效地计算每行之间的时间差(以毫秒为单位)。

您是否尝试过
datetime.strtime()
函数?它将以字符串形式读入datetime,并将其转换为datetime对象

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


此处的文档:

%H:%M:%S.%f
是解析时间时要使用的格式字符串。看

结果是:

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)

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

我尝试过,但使用datetime.strTime,但使用“%H:%M:%S”作为格式时,由于毫秒的原因,会出现值错误。您遇到了什么问题?您应该注意,您在字符串中使用的浮点值确实为
strtime()
带来了问题,因为%S需要一个integerSee@squidy的答案,他使用“%S.%f”作为时间格式正确处理“浮点值”。我忽略了这样一个事实,即从技术上讲,您不是在查看字符串中的浮点数,而是可以使用“.”作为分隔符。格式是
“%H:%M:%S.%f”
。我明白了。谢谢我现在有一个timedelta表示。如何计算以毫秒为单位的差值?
int(diff.seconds*1000.+diff.microseconds/1000.)
有关以毫秒为单位的转换,请参阅eurmiro在相关注释中的注释。感谢您的提示。我已经添加了转换并包括了天数(如果需要的话)。
delta = times[i + 1] - times[i]
print ((delta.days * 24 * 60 * 60 + delta.seconds) * 1000 + delta.microseconds / 1000)