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

Python datetime跨天时间小时差计算异常:结果与预期不符

时间差计算结果不符的原因及解决办法

你用datetime模块计算02:30 PM到01:30 AM的时间差得到13小时,但实际应该是11小时,问题出在日期默认值上:

  • 当你只用%I:%M %p格式解析时间时,datetime会自动给两个时间加上默认的日期1900-01-01
  • 解析后firstTime是1900-01-01 14:30:00,endTime是1900-01-01 01:30:00
  • 直接用firstTime - endTime算的是同一天内14:30到01:30的倒推差值(13小时),但你实际需要的是从当天下午到次日凌晨的跨天差值

修正后的代码

import datetime

start_time = "02:30 PM"
end_time = "01:30 AM"

firstTime = datetime.datetime.strptime(start_time , "%I:%M %p")
endTime = datetime.datetime.strptime(end_time , "%I:%M %p")

# 处理跨天:如果结束时间早于开始时间,说明是次日的时间,加一天
if endTime < firstTime:
    endTime += datetime.timedelta(days=1)

deltaTime = endTime - firstTime
print(f"Time Difference is {deltaTime.total_seconds()/(60*60)} hours")

运行这段代码会输出正确的11小时,因为我们给endTime补了一天,变成1900-01-02 01:30:00,此时和1900-01-01 14:30:00的差值就是11小时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:55:19