You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:13:16