我正在尝试编写一个可以在时间戳中读取为字符串并将其转换为毫秒的基本脚本。我正在使用的时间戳以分钟:秒。毫秒格式表示。
from datetime import datetime
timestamp_start = '54:12.123'
MSM = '%M:%S.%f'
zero = '00:00.000'
start_sec = (datetime.strptime(timestamp_start, MSM) - datetime.strptime(zero, MSM)).total_seconds()
start_ms = start_sec * 1000
print(start_ms)
这可能是一种方法,但是我首先使用datetime.strptime获得一个datetime对象,然后减去0以得到一个timedelta对象,获得timedelta对象的总秒数,最后乘以1000转换为毫秒。
上面的代码可以正常工作,除了一个小时内的任何时间戳。
我遇到的问题-时间戳记没有小时计数器。例如:1小时5分30秒为65:30.000。 datetime.strptime无法识别此格式,因为它只允许分钟在0到59之间。
如何将这些时间戳转换为datetime可以识别的格式?我应该首先将时间戳转换为小时:分钟:秒:毫秒格式吗?请记住,最终目标是将这些时间戳转换为毫秒。如果有更好的方法,欢迎任何建议!
答案 0 :(得分:1)
'54:12.123'
并不是真正的时间戳,而是经过的时间,并且Python中没有内置方法可以使用诸如时间戳格式的格式字符串来处理经过的时间。
由于所讨论的格式字符串只是用分钟和秒用冒号隔开,而用秒和毫秒则用句点隔开,因此您可以使用str.split
方法轻松解析它:
def convert(msf):
minutes, seconds = msf.split(':')
seconds, milliseconds = seconds.split('.')
minutes, seconds, milliseconds = map(int, (minutes, seconds, milliseconds))
return (minutes * 60 + seconds) * 1000 + milliseconds
使convert('54:12.123')
返回:
3252123