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

Excel DATEVALUE机制下时间相减得小数的原理及Python实现问询

关于Excel时间减法得小数及Python实现的问题

为什么Excel中时间减法会得到小数结果

Excel采用序列值存储日期和时间:

  • 整数部分代表从1900年1月0日开始的天数
  • 小数部分代表一天中的时间占比(1 = 24小时)

你表格里的08:16:17和09:00:00属于纯时间,对应序列值的小数部分。两者的时间差为43分43秒,换算成一天的占比就是:

(43*60 + 43) / (24*60*60) = 2623 / 86400 ≈ 0.030359

这就是=B-A得到小数的原因,DATEVALUE只是把文本格式的时间转成对应的序列值,本质还是基于这个存储规则计算。

用Python实现相同结果

可以借助datetime模块解析时间,计算时间差后转换成一天的占比,代码示例如下:

from datetime import time

# 解析两个时间字符串
time_a = time.fromisoformat("08:16:17")
time_b = time.fromisoformat("09:00:00")

# 计算两个时间的总秒数
total_sec_a = time_a.hour * 3600 + time_a.minute * 60 + time_a.second
total_sec_b = time_b.hour * 3600 + time_b.minute * 60 + time_b.second

# 计算时间差的秒数,再除以一天的总秒数得到占比
diff_sec = total_sec_b - total_sec_a
result = diff_sec / (24 * 3600)

print(round(result, 6))  # 输出:0.030359

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:33:01