如何将mm:ss.ms格式时间转换为ss.ms格式?Python实现求助
解决时间格式转换保留毫秒的问题
嘿,这个问题的关键在于你用了time.strptime,它返回的struct_time对象不包含微秒/毫秒信息,所以你丢失了.44这部分数据!咱们换用datetime模块来处理就没问题了,下面给你两种靠谱的解法:
方法一:直接计算总秒数
用datetime.strptime解析字符串,它返回的datetime对象会完整保留分钟、秒和微秒,之后咱们直接计算总秒数:
from datetime import datetime time_str = "01:40.44" dt = datetime.strptime(time_str, '%M:%S.%f') total_seconds = dt.minute * 60 + dt.second + dt.microsecond / 1000000 print(total_seconds) # 输出 100.44
针对你提到的1:03.091,运行后会得到63.091,如果需要保留两位小数,加个round(total_seconds, 2)就行,结果就是63.09。
方法二:用timedelta计算
利用timedelta的total_seconds()方法,它会自动帮你把所有时间单位转换成秒,包括微秒:
from datetime import datetime, timedelta time_str = "01:40.44" dt = datetime.strptime(time_str, '%M:%S.%f') time_delta = timedelta( minutes=dt.minute, seconds=dt.second, microseconds=dt.microsecond ) print(time_delta.total_seconds()) # 输出 100.44
为啥原来的代码不行?
time.strptime虽然能解析%f格式,但它返回的struct_time没有专门存储微秒的字段,所以你拿到的x.tm_sec只是整数40,.44这部分直接丢失了,自然计算出来的总秒数是100.0而不是100.44。
内容的提问来源于stack exchange,提问作者Penny
相关产品推荐
相关产品推荐

