如何在Python中将时间格式转换为毫秒及反向转换?

7 投票
2 回答
21840 浏览
提问于 2025-04-16 15:00

我正在写一个脚本来处理ffmpeg,我需要能够以00:00:00[.000]的格式来加减时间。

最后的三位数字是可选的,表示毫秒。一个时间字符串可能看起来像下面的任意一种:

4:34.234
5.000
2:99:34
4:14

如果很多数字不是可选的,那就简单多了。但是因为它们是可选的,我在想我是不是得用某种正则表达式来解析它?

2 个回答

-1
from time import time

time_in_seconds = int(time())
time_in_miliseconds = int(time_in_seconds *1000)

你还可以用 str(x) 把 x 转换成字符串。然后你可以用各种方法来创建你想要的字符串,比如说:(这两种方法都假设你已经有了 hrs、min、sec 和 msec 这些变量,并且它们的值是你想要的)

str(hrs) + ':' + str(min) + ':' + str(sec) + '.' + str(msec)

或者,更符合 Python 风格的写法:

'{hrs}:{min}:{sec}.{msec}'.format(hrs = str(hrs), min = str(min), sec = str(sec), msec = str(msec))

此外,如果你想用当前时间的话,可以使用时间模块里的 strftime() 函数。可以查看一下 http://docs.python.org/library/time.html

18

将字符串转换为毫秒:

s = "4:34.234"
hours, minutes, seconds = (["0", "0"] + s.split(":"))[-3:]
hours = int(hours)
minutes = int(minutes)
seconds = float(seconds)
miliseconds = int(3600000 * hours + 60000 * minutes + 1000 * seconds)

将毫秒转换为字符串:

hours, milliseconds = divmod(miliseconds, 3600000)
minutes, milliseconds = divmod(miliseconds, 60000)
seconds = float(milliseconds) / 1000
s = "%i:%02i:%06.3f" % (hours, minutes, seconds)

撰写回答