python-3.x - 如何在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 之间。
如何将这些时间戳转换为日期时间可识别的格式?我应该首先将时间戳转换为小时:分钟:秒:毫秒格式吗?请记住,最终目标是将这些时间戳转换为毫秒。如果有更好的方法,任何建议都非常受欢迎!
解决方案
'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
推荐阅读
- environment-variables - Systemd 什么时候没有设置 RUNTIME_DIRECTORY 环境?
- .net - 为什么关闭表单后我的剪贴板数据消失了?
- java - Spring数据即时转换为日期
- java - 在java中使用数据库处理程序执行操作的问题
- javascript - 在 React 中,我想使用本地构建的组件(CKeditor 5)
- javascript - 在 asp.net.core c# 中通过 ajax 命令将布尔值发送到控制器
- sharepoint - 如何更新两个列表之间的列
- powershell-4.0 - 从 main.ps1 文件调用在 powershell 中相对存在于 second.ps1 文件中的函数
- c - 向 3D 数组分配内存和设置值时出现 Seg Fault
- python - 在 pandas 中更改数据类型不会更改 df.info()