如何在Python中将时间格式转换为毫秒并再次转换回来?

7

我需要翻译的内容是关于it技术的,具体是关于ffmpeg脚本的时间格式。为了能够在脚本中使用,我需要能够进行时间的加减操作,时间格式为00:00:00[.000]。

最后三位数字是可选的,表示毫秒。时间字符串可以是以下任何一种格式:

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

如果很多数字不是必需的,那么这会更容易。但既然它们是可选的,我认为我必须使用某种正则表达式来解析它?

这是作业吗?要么在“:”和“.”处拆分字符串很简单,要么使用正则表达式。将数字字符串转换为整数并计算总秒数是微不足道的(基本时间算术)。 - user2665694
2个回答

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)

谢谢,这个可行。虽然我对第二行的语法感到困惑。 - fent
2
第二行添加前导零以填充可能不存在的字段。 - Sven Marnach

-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))

此外,如果您想使用当前时间,可以在time模块中使用strftime()函数。请查看http://docs.python.org/library/time.html

2
你的“time_in_milliseconds”将会偏差在0-1000毫秒之间。额外的奖励是,它总是以“000”结尾。 - Nicholas Knight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接