如何将timedelta生成的HH:MM:SS格式字符串转换为秒级int值
实现方案
方法1:拆分字符串逐段计算(最通用)
直接将HH:MM:SS格式的字符串按冒号拆分,分别转换为整数后按小时乘3600、分钟乘60、秒乘1的规则累加即可,无额外依赖,适配所有合法的timedelta输出格式:
def hhmmss_to_seconds(time_str: str) -> int: h, m, s = map(int, time_str.split(':')) return h * 3600 + m * 60 + s # 测试你的示例输入 print(hhmmss_to_seconds("22:00:01")) # 输出 79201
- 优点:逻辑简单、运行效率高,即使小时数超过24(比如
100:02:30这种长时间跨度的timedelta输出)也能正常解析 - 适配场景:仅处理
HH:MM:SS格式的字符串,无天数字段的情况
补充:如果你的输入可能包含超过1天的timedelta输出(格式为
X days, HH:MM:SS),可以用改造后的版本:def timedelta_str_to_seconds(time_str: str) -> int: total = 0 if 'day' in time_str: day_seg, time_seg = time_str.split(', ') total += int(day_seg.split()[0]) * 86400 else: time_seg = time_str h, m, s = map(int, time_seg.split(':')) return total + h * 3600 + m * 60 + s
方法2:使用datetime库解析(适合已引入datetime的项目)
如果项目中已经用到datetime相关工具,也可以通过strptime解析后计算:
from datetime import datetime def hhmmss_to_seconds(time_str: str) -> int: dt = datetime.strptime(time_str, "%H:%M:%S") return dt.hour * 3600 + dt.minute * 60 + dt.second
- 注意:该方法仅支持小时数小于24的输入,超过24小时会抛出解析错误,不适合处理大跨度的timedelta输出。
内容的提问来源于stack exchange,提问作者Roger Steinberg
相关产品推荐
相关产品推荐

