01时间差计算
时间差计算
钟表时间模型
TimeDateLab 比较计算器中显示的本地钟点与日历值,不进行时区转换,也不计算跨夏令时变化的带时区真实经过时间。所有时长信息都由总秒数派生。
- 模型
- 钟表时间
- 时区
- 不应用
- 夏令时
- 不应用
- 事实来源
- 总秒数
仅时间计算
计算规则
总秒数= 结束时刻秒数− 开始时刻秒数+ 次日偏移 × 86,400
次日偏移只有 0 天或 1 天。同日计算不增加天数;开启“结束于次日”时恰好增加 86,400 秒。
仅时间边界情况
- 09:00 → 09:00
- 结果:0 小时
- 09:00 → 次日 09:00
- 结果:24 小时
- 23:59:59 → 次日 00:00:00
- 结果:1 秒
- 23:30 → 次日 01:15
- 结果:1 小时 45 分钟
如果结束时刻早于开始时刻,并且没有开启“结束于次日”,计算器会显示可恢复的错误,而不会返回负时长。
日期与时间计算
计算模型
日期时间标量= 公历日序号 × 86,400+ 当日秒数时长= 结束标量 − 开始标量
日期会明确日界线,因此此模式不使用“结束于次日”。结束日期时间早于开始值时会返回错误;时区与夏令时的真实经过时间语义仍不适用。
精度与舍入
- 默认的可见与计算精度为分钟精度。
- 开启“包含秒”后使用秒精度;关闭时,隐藏的开始秒数与结束秒数会重置为零。
- 精确时长始终以总秒数为准;十进制小时和十进制分钟由总秒数派生。
- 十进制值采用四舍五入并保留两位小数;仅当显示值并非精确值时才出现“≈”。
限制
- 支持的钟点范围:00:00:00–23:59:59。
- 不包含闰秒。
- 不进行时区转换,也不按夏令时调整真实经过时间。
02工时计算
工时计算
单班次模型
工时计算器复用仅时间计算所使用的无时区钟表时长模型,接收一个开始时间、一个结束时间、明确的 0 或 1 天次日偏移,以及一次整数分钟休息扣除。
计算规则
班次总秒数= 结束时刻秒数 − 开始时刻秒数+ 次日偏移 × 86,400净工作秒数= 班次总秒数 − 休息分钟 × 60
- 休息分钟必须是非负整数,且不能超过班次总时长。
- 净工作时间、十进制小时与总分钟都由同一个净工作秒数事实派生。
- 十进制小时沿用时间差计算器的两位四舍五入规则。
- 周时间卡、多班次、工资、加班、税费、节假日、时区与夏令时不属于此模型。
03天数计算
天数计算
公历日期模型
日期计算采用向前推演的公历模型,支持 至 。1582 年以前的日期也按现代公历闰年规则计算;每个有效日期会转换为整数公历日序号,再进行相减。
- 日历
- 向前推演公历
- 范围
- –
- 日期值
- 公历日序号
闰年规则
年份能被 4 整除时通常是闰年;能被 100 整除时不是闰年,除非它同时还能被 400 整除。
- 1900
- 不是闰年
- 2000
- 是闰年
- 2100
- 不是闰年
端点规则
默认
[start, end)
包含开始日期 · 不包含结束日期
开启“包含结束日期”
[start, end]
包含开始日期 · 包含结束日期
- 相同日期
- 关闭:0 天 · 开启:1 天
- 相邻日期
- 关闭:1 天 · 开启:2 天
工作日与周末天数拆分
工作日(周一至周五)与周末天数(周六至周日)按星期直接分类。本工具不扣除法定节假日,因此不是考虑节假日的工作日历。
每个完整的 7 天区间包含 5 个工作日和 2 个周末天数,其余日期再逐一分类。
计算守恒关系
工作日 + 周末天数 = 日历天数
边界情况与限制
- 相同的端点与日历规则适用于跨月、跨年,以及 1900 年和 2000 年等闰年边界。
- 结束日期早于开始日期时,计算器会报告错误;它不会静默交换日期,也不会返回绝对值。
- 不提供法定节假日日历、自定义工作周或日期加减功能。
05验证方式
验证方式
实现可信度来自多种相互补充的检查。
- 固定边界
- 固定示例覆盖闰年边界、相同时刻、跨夜、支持日期范围两端和反向输入。
- 守恒关系
- 生成的输入会检查工作日与周末天数守恒、分享状态往返稳定,以及无效状态的安全处理。
- 独立对照
- 开发期间,公历日期计算会与独立的日历实现进行对照;该对照库仅用于开发,不会进入生产版本。
- 浏览器与界面
- 真实浏览器检查覆盖中英文计算流程、键盘与无障碍行为、移动端与缩放布局、分享、复制、错误恢复,以及网络和隐私边界。
这些检查可以提高可信度,但不能证明缺陷不可能存在,也不代表认证或形式化验证。