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

如何在Python中计算分钟级时间差?现有代码运行失败求解

解决时间分钟差值计算的问题

嘿,我看看你的代码问题哈~你的代码跑不起来,核心原因是时间格式字符串和输入的时间格式不匹配,咱们一步步来修复:

问题分析

你用的格式字符串是%m/%d %H:%M:%S,但这个格式对数字的位数有严格要求:

  • %m要求月份是两位数字(比如01),但你的t2里月份是1(一位数)
  • %S要求秒数是两位数字(比如00),但你的t1里秒数是0(一位数)
    这两个不匹配会导致strptime直接抛出ValueError,无法解析时间字符串。

另外,你原来的代码里计算的是d1_ts - d2_ts,得到的会是负数,而你预期的是正的2分钟,应该反过来算d2_ts - d1_ts。

方案1:用标准库预处理时间字符串(跨平台)

我们可以先把输入的时间字符串标准化,把一位的数字补成两位,再用原来的格式解析:

from datetime import datetime

def normalize_time(time_str):
    # 拆分日期和时间部分
    date_part, time_part = time_str.split(' ')
    # 补全月份、日期的前导零
    month, day = date_part.split('/')
    normalized_date = f"{month.zfill(2)}/{day.zfill(2)}"
    # 补全时、分、秒的前导零
    h, m, s = time_part.split(':')
    normalized_time = f"{h.zfill(2)}:{m.zfill(2)}:{s.zfill(2)}"
    return f"{normalized_date} {normalized_time}"

# 你的原始时间
t1 = '01/24 14:50:0'
t2 = '1/24 14:52:01'

fmt = '%m/%d %H:%M:%S'
d1 = datetime.strptime(normalize_time(t1), fmt)
d2 = datetime.strptime(normalize_time(t2), fmt)

# 计算分钟差值,直接用datetime的差值更简洁
delta_minutes = int((d2 - d1).total_seconds() / 60)
print(delta_minutes)  # 输出:2

方案2:用第三方库简化解析(更省心)

如果你可以安装第三方库,python-dateutil的解析器能自动识别各种宽松格式的时间字符串,不需要手动处理格式:

from dateutil import parser

d1 = parser.parse('01/24 14:50:0')
d2 = parser.parse('1/24 14:52:01')

delta_minutes = int((d2 - d1).total_seconds() / 60)
print(delta_minutes)  # 输出:2

安装方法:pip install python-dateutil

小提示

其实不需要转成时间戳再计算,datetime对象直接相减就能得到timedelta对象,调用total_seconds()就能轻松换算成分钟,代码更简洁易读~

内容的提问来源于stack exchange,提问作者preethy tulpi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:22:53