如何在 python 中将时间戳转换为毫秒
How to convert timestamp into milliseconds in python
我正在尝试编写一个基本脚本,可以将时间戳作为字符串读取并将其转换为毫秒。我正在使用的时间戳采用 minute:second.millisecond 格式。
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 之间。
如何将这些时间戳转换为日期时间可识别的格式?我应该先将时间戳转换为 hour:minute:second:millisecond 格式吗?请记住,最终目标是将这些时间戳转换为毫秒。如果有更好的方法,欢迎提出任何建议!
'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')
returns:
3252123
我正在尝试编写一个基本脚本,可以将时间戳作为字符串读取并将其转换为毫秒。我正在使用的时间戳采用 minute:second.millisecond 格式。
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 之间。
如何将这些时间戳转换为日期时间可识别的格式?我应该先将时间戳转换为 hour:minute:second:millisecond 格式吗?请记住,最终目标是将这些时间戳转换为毫秒。如果有更好的方法,欢迎提出任何建议!
'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')
returns:
3252123