【问题标题】:How to convert timestamp into milliseconds in python如何在python中将时间戳转换为毫秒
【发布时间】:2019-12-12 23:51:34
【问题描述】:

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

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.x datetime python-datetime


    【解决方案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
    

    【讨论】:

    • 我觉得我把这件事复杂化了。完美的简单解决方案。非常感谢!
    猜你喜欢
    • 2016-03-04
    • 2013-03-09
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多