首页 > 解决方案 > 如何在python中将时间戳转换为毫秒

问题描述

我正在尝试编写一个基本脚本,可以将时间戳作为字符串读取并将其转换为毫秒。我正在使用的时间戳采用分钟:秒.毫秒格式。

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 之间。

如何将这些时间戳转换为日期时间可识别的格式?我应该首先将时间戳转换为小时:分钟:秒:毫秒格式吗?请记住,最终目标是将这些时间戳转换为毫秒。如果有更好的方法,任何建议都非常受欢迎!

标签: python-3.xdatetimepython-datetime

解决方案


'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

推荐阅读