Python如何将秒.毫秒格式时间转换为hh:mm:ss,mmm标准格式
Python 秒级时间转SRT字幕格式的解决方法
问题根源
你现有代码的问题主要有3点:
- 冗余逻辑:
import time放在循环、函数内不合理,遍历json_data的循环没有实际作用,每次都会覆盖var的值 - 格式匹配错误:
time.strftime的%f占位符输出的是6位微秒,和SRT要求的3位毫秒不匹配 - 分隔符错误:SRT时间要求时分秒和毫秒之间用逗号分隔,你用了点号
修正后的代码
import time import json # 提前读取JSON数据,不要放在转换函数内重复执行 with open('SubRip.srt','r',encoding='UTF-8') as f: json_data = json.load(f) def ss2HMS(seconds_float): # 拆分整数秒和毫秒部分 total_sec = int(seconds_float) ms = int((seconds_float % 1) * 1000) # 计算时分秒,手动计算避免超过24小时时gmtime出现天数进位问题 hours = total_sec // 3600 minutes = (total_sec % 3600) // 60 sec = total_sec % 60 # 按SRT要求格式化,不足两位/三位的自动补零 return f"{hours:02d}:{minutes:02d}:{sec:02d},{ms:03d}"
使用示例
遍历JSON中的startTime字段转换:
for item in json_data: srt_start_time = ss2HMS(float(item['startTime'])) # 后续处理字幕逻辑 print(srt_start_time) # 输出示例:00:02:15,342
内容的提问来源于stack exchange,提问作者sauron_08
相关产品推荐
相关产品推荐

