如何在Python中从timedelta对象提取分秒并转为mm:ss格式?
如何将datetime.timedelta对象转换为mm:ss格式(仅包含分钟和秒)?
我写了一段Python代码,用来累加列表中语音片段的时长,最终得到一个datetime.timedelta对象。现在需要把这个结果转换成mm:ss格式(只显示分钟和秒,包括小数部分的秒)。
我的代码如下:
import datetime def add_time(timeList): sums = datetime.timedelta() for i in timeList: x = datetime.datetime.strptime(i, '%M:%S.%f') d = datetime.timedelta(minutes=x.minute, seconds=x.second, microseconds=x.microsecond) sums += d print(str(sums)) return sums
调用add_time(['00:04.0', '00:15.2', '1:10.4'])后,输出是0:01:29.600000,返回的对象是datetime.timedelta(0, 89, 600000)。请问怎么从这个timedelta对象中提取分钟和秒,转换成mm:ss格式呢?
解决方案:计算总秒数后格式化
要把timedelta转成mm:ss格式,核心是先拿到总秒数(包括微秒),再拆分出分钟和剩余秒数,最后格式化输出。这里有两种实用的方法:
方法1:利用total_seconds()快速计算
timedelta提供了total_seconds()方法,直接返回包含微秒的浮点型总秒数,这是最简便的方式:
import datetime def format_timedelta_to_mmss(td): total_seconds = td.total_seconds() # 整数除法得到分钟数,取余得到剩余秒数 minutes = int(total_seconds // 60) seconds = total_seconds % 60 # 格式化:分钟补两位零,秒保留1位小数(根据你的需求调整精度) return f"{minutes:02d}:{seconds:.1f}" # 测试你的例子 td = datetime.timedelta(0, 89, 600000) print(format_timedelta_to_mmss(td)) # 输出:01:29.6
方法2:手动计算总秒数(兼容更复杂的timedelta)
如果你的timedelta可能包含天数(比如累加时长超过1天),可以手动把所有时间单位转换成秒:
def format_timedelta_to_mmss(td): # 计算总秒数:天数转秒 + 秒数 + 微秒转秒 total_seconds = td.days * 86400 + td.seconds + td.microseconds / 1000000 minutes = int(total_seconds // 60) seconds = total_seconds % 60 # 如果需要整数秒,就用:.0f;要更多精度就改小数位数 return f"{minutes:02d}:{seconds:.1f}"
整合到你的原有代码里
你可以直接修改add_time函数,让它返回格式化后的结果,不用单独处理timedelta:
import datetime def add_time(timeList): sums = datetime.timedelta() for i in timeList: x = datetime.datetime.strptime(i, '%M:%S.%f') d = datetime.timedelta(minutes=x.minute, seconds=x.second, microseconds=x.microsecond) sums += d # 在这里直接格式化 total_seconds = sums.total_seconds() minutes = int(total_seconds // 60) seconds = total_seconds % 60 return f"{minutes:02d}:{seconds:.1f}" # 调用测试 print(add_time(['00:04.0', '00:15.2', '1:10.4'])) # 输出:01:29.6
小提示:别直接用td.seconds来计算,因为它只包含0-86399的秒数,不包含天数和微秒部分,用total_seconds()能避免踩这个坑。
内容的提问来源于stack exchange,提问作者Aizayousaf
相关产品推荐
相关产品推荐

