如何在特定的时间戳上添加时间的Python代码?

11

我正在尝试理解 datetime 模块并需要一些帮助。

我有一个看起来像这样的字符串:

00:03:12,200 --> 00:03:14,316

(即小时:分钟:秒,毫秒) 需要为每个时间戳添加10秒。 以以下内容作为输出:

00:03:22,200 --> 00:03:24,316

怎样编写Python代码实现这个功能?

2个回答

8

要解析时间,使用strptime函数

>>> x = '00:03:12,200 --> 00:03:14,316'
>>> x1 = x.split('-->')
>>> x1
['00:03:12,200 ', ' 00:03:14,316']
>>> t1 = datetime.datetime.strptime(x1[0], '%H:%M:%S,%f ')
>>> t1
datetime.datetime(1900, 1, 1, 0, 3, 12, 200000)

使用timedelta

>>> t = datetime.timedelta(seconds=1)
>>> t
datetime.timedelta(0, 1)
>>> 
>>> t1 + t
datetime.datetime(1900, 1, 1, 0, 3, 13, 200000)
>>> k = t1 + t

重新转换为字符串

>>> k.strftime('%H:%M:%S,%f ')
'00:03:13,200000 '

问题是如何将“00:03:12,200”字符串转换为时间对象。我尝试使用t = datetime.strptime("00:02:59,840", "%HH:%MM:%SS,mmm")进行转换,但出现错误。报错信息为:ValueError: time data '00:02:59,840' does not match format '%HH:%MM:%SS,mmm'。 - user63503
t = datetime.strptime("00:02:59", "%HH:%MM:%SS%mmm") 或者 "%HH:%MM:%SS%,mmm" 或者 "%HH:%MM:%SS,%mmm" -- 都会报错。我在秒数后面加了一个逗号,但不知道如何在格式字符串中表示它。 - user63503
当我执行: t = datetime.strptime("00:02:59,840", "%HH:%MM:%SS,%f")时,它会显示一个错误:ValueError: time data '00:02:59,840' 与格式 '%HH:%MM:%SS,%f' 不匹配。 - user63503
好的,我不应该使用双引号。用单引号就可以了! - user63503

7
要添加10秒钟,您可以使用以下方法:
datetime.datetime.now() + datetime.timedelta(seconds=10)

为了解析上述代码,您可以使用strptime
datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")

更多详情请看这里:

该链接提供了关于Python日期时间库的详细信息。

我有特定的时间戳格式。如何让Python将类似于“00:03:12,200”的字符串理解为时间? - user63503
通过向 strptime 提供描述格式的格式字符串。请阅读提供的文档。 - Karl Knechtel
是的,正如Karl所提到的,前往上面的链接,滚动到末尾 - 你需要的所有说明符都在那里。 - icyrock.com
卡尔,我已经阅读了它。仍然无法想象如何用“:”描述小时、分钟和秒之间的字符串,并在秒后加上“,”。 - user63503
好的,请尝试:%H:%M:%S,%f。阅读此SOq:https://dev59.com/questions/93RB5IYBdhLWcg3wLUq3 - icyrock.com

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