Python如何提取字符串中的时间值并完成时间减法运算
解决Python中自定义时间格式的减法问题
要实现你需要的时间减法,核心思路是先把自定义格式的时间转换成总毫秒数(数值计算最省心),算出差值后再转回分钟:秒:毫秒的格式。下面是具体的实现步骤和代码:
步骤1:拆分输入的时间字符串
先把你的Time字符串按空格分割成两个独立的时间片段:
time_str = "01:20:23 01:25:36" start_time, end_time = time_str.split()
步骤2:写个工具函数转时间为毫秒
把mm:ss:SS格式的字符串转换成总毫秒数,方便做减法运算:
def time_to_ms(time_str): # 按冒号拆分出分钟、秒、毫秒,转成整数 minutes, seconds, milliseconds = map(int, time_str.split(':')) # 计算总毫秒数:1分钟=60秒=60*1000毫秒,1秒=1000毫秒 return minutes * 60 * 1000 + seconds * 1000 + milliseconds
步骤3:计算差值并转回目标格式
先算出两个时间的毫秒差,再把差值拆回分钟、秒、毫秒,最后格式化输出:
# 把两个时间转成毫秒 start_ms = time_to_ms(start_time) end_ms = time_to_ms(end_time) # 计算时间差(注意顺序,确保是结束时间减开始时间,也可以用abs()避免负数) diff_ms = end_ms - start_ms # 把毫秒差拆成分钟、秒、毫秒 minutes = diff_ms // (60 * 1000) remaining_ms = diff_ms % (60 * 1000) seconds = remaining_ms // 1000 milliseconds = remaining_ms % 1000 # 格式化输出,用02d确保每个部分都是两位数字 result = f"{minutes:02d}:{seconds:02d}:{milliseconds:02d}" print(result) # 输出结果:00:05:13
完整可运行代码
把上面的步骤整合起来,就是直接能用的代码:
def time_to_ms(time_str): minutes, seconds, milliseconds = map(int, time_str.split(':')) return minutes * 60 * 1000 + seconds * 1000 + milliseconds # 你的输入时间字符串 time_str = "01:20:23 01:25:36" start_time, end_time = time_str.split() # 计算时间差 start_ms = time_to_ms(start_time) end_ms = time_to_ms(end_time) diff_ms = end_ms - start_ms # 转换回目标格式 minutes = diff_ms // (60 * 1000) remaining_ms = diff_ms % (60 * 1000) seconds = remaining_ms // 1000 milliseconds = remaining_ms % 1000 result = f"{minutes:02d}:{seconds:02d}:{milliseconds:02d}" print(result)
小补充
如果不确定两个时间的先后顺序,可以把diff_ms = end_ms - start_ms改成diff_ms = abs(end_ms - start_ms),这样就不会出现负数差值的问题啦。
内容的提问来源于stack exchange,提问作者playtrumps
相关产品推荐
相关产品推荐

