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

Python如何使用datetime模块计算两个datetime时间的中间值

解答

你写的公式不能直接用,存在两个核心问题:

  • 运算优先级错误:Python中除法优先级高于加减法,你写的max_time - min_time / 2 + min_time会优先计算min_time / 2,而datetime对象本身不支持直接和整数做除法,运行会直接抛出类型错误。
  • 逻辑疏漏:只有两个datetime相减得到的timedelta(时间差)对象,才支持除以整数的运算,计算区间中点必须先算出两个时间的差值,再把一半长度的差值加给起始时间。

另外你贴的示例代码有笔误:你描述的max_time是2时50分,但代码里写的是datetime.datetime(1900, 1, 1, 2, 5)对应2时05分,这个区间的中点是1时47分30秒,得不到你要的2时10分结果。

正确实现代码

import datetime

min_time = datetime.datetime(1900, 1, 1, 1, 30)
# 修正笔误:将2时5分改为2时50分,和描述的时间区间一致
max_time = datetime.datetime(1900, 1, 1, 2, 50)

# 正确中点计算逻辑:起始时间 + 时间差的一半
mid_time = min_time + (max_time - min_time) / 2

# 结果验证
print(mid_time.strftime("%H:%M"))  # 输出 02:10
print(min_time < mid_time < max_time)  # 输出 True,满足1:30 < 2:10 < 2:50的大小要求

公式修正

你的计算思路本身是对的,只是漏了给时间差计算加括号,修正后的合法公式为:
mid_time = min_time + (max_time - min_time) / 2
这个逻辑完全符合数学上的区间中点计算规则,基于datetime原生模块就能实现,不需要额外依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:09:47