Python中如何将H:MM:SS格式时间差转为HH:MM:SS格式?
解决timedelta转不含微秒的HH:MM:SS格式问题
你的问题出在两个核心点:
datetime.strptime的参数顺序搞反了——正确顺序是时间字符串在前,格式字符串在后;- 就算修正顺序,
0:00:01这种单小时位的字符串,和要求两位小时的%H:%M:%S格式不匹配,依然会触发报错。
而且本质上你不需要用strptime,因为它是用来解析字符串为时间对象的工具,而你要做的是格式化时间差为指定格式。下面给你两种靠谱的实现方式:
方法一:直接操作timedelta对象(推荐)
既然你得到的avg_inqueue_time是timedelta类型,直接用它的属性和方法处理最稳妥:
from datetime import timedelta # 假设这是你的时间差对象 avg_inqueue_time = timedelta(seconds=1.11) # 取整总秒数(自动去掉微秒) total_sec = int(avg_inqueue_time.total_seconds()) # 拆分小时、分钟、秒 hours = total_sec // 3600 minutes = (total_sec % 3600) // 60 seconds = total_sec % 60 # 格式化两位数字的HH:MM:SS formatted_time = f"{hours:02d}:{minutes:02d}:{seconds:02d}" # 输出结果:"00:00:01"
方法二:处理已拆分微秒的字符串
如果你已经通过split(".")[0]得到了0:00:01这样的字符串,可以拆分后再格式化:
time_str = "0:00:01" # 拆分时分秒 h, m, s = time_str.split(":") # 转成整数后按两位格式输出 formatted_time = f"{int(h):02d}:{int(m):02d}:{int(s):02d}" # 输出结果:"00:00:01"
内容的提问来源于stack exchange,提问作者savtantalos
相关产品推荐
相关产品推荐

