技术参考

计算方法

了解 TimeDateLab 的计算规则、假设、限制与验证方式。

时间差计算

钟表时间模型

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。
  • 不包含闰秒。
  • 不进行时区转换,也不按夏令时调整真实经过时间。

工时计算

单班次模型

工时计算器复用仅时间计算所使用的无时区钟表时长模型,接收一个开始时间、一个结束时间、明确的 0 或 1 天次日偏移,以及一次整数分钟休息扣除。

计算规则

班次总秒数= 结束时刻秒数 − 开始时刻秒数+ 次日偏移 × 86,400净工作秒数= 班次总秒数 − 休息分钟 × 60

  • 休息分钟必须是非负整数,且不能超过班次总时长。
  • 净工作时间、十进制小时与总分钟都由同一个净工作秒数事实派生。
  • 十进制小时沿用时间差计算器的两位四舍五入规则。
  • 周时间卡、多班次、工资、加班、税费、节假日、时区与夏令时不属于此模型。

天数计算

公历日期模型

日期计算采用向前推演的公历模型,支持 至 。1582 年以前的日期也按现代公历闰年规则计算;每个有效日期会转换为整数公历日序号,再进行相减。

日历
向前推演公历
范围
–
日期值
公历日序号

闰年规则

年份能被 4 整除时通常是闰年;能被 100 整除时不是闰年,除非它同时还能被 400 整除。

1900
不是闰年
2000
是闰年
2100
不是闰年

端点规则

默认

[start, end)

包含开始日期 · 不包含结束日期

开启“包含结束日期”

[start, end]

包含开始日期 · 包含结束日期

相同日期
关闭:0 天 · 开启:1 天
相邻日期
关闭:1 天 · 开启:2 天

工作日与周末天数拆分

工作日(周一至周五)与周末天数(周六至周日)按星期直接分类。本工具不扣除法定节假日,因此不是考虑节假日的工作日历。

每个完整的 7 天区间包含 5 个工作日和 2 个周末天数,其余日期再逐一分类。

计算守恒关系

工作日 + 周末天数 = 日历天数

边界情况与限制

  • 相同的端点与日历规则适用于跨月、跨年,以及 1900 年和 2000 年等闰年边界。
  • 结束日期早于开始日期时,计算器会报告错误;它不会静默交换日期,也不会返回绝对值。
  • 不提供法定节假日日历、自定义工作周或日期加减功能。

共用模型与数据边界

本地计算

输入处理和计算在浏览器中进行;不会把计算器输入发送给计算接口或业务接口来生成结果。

确定性模型

相同的有效输入与相同的明确规则会产生相同的计算结果。

结构化错误

无效或有歧义的状态会产生可见、可恢复的错误,而不会被静默修正。

分享片段

只有主动选择“分享”时,规范化输入与规则才会编码到网址中 # 后面的分享片段;计算结果不会被编码,片段也不会随普通 HTTP 请求发送。

分享片段仍可能出现在浏览器历史记录、浏览器同步、剪贴板、你选择的消息服务以及接收者设备中。

分析边界

TimeDateLab 使用 Google Analytics 进行页面级衡量,但不定义自定义产品交互事件;计算器输入、精确结果和分享片段不会发送到分析系统。

验证方式

实现可信度来自多种相互补充的检查。

固定边界
固定示例覆盖闰年边界、相同时刻、跨夜、支持日期范围两端和反向输入。
守恒关系
生成的输入会检查工作日与周末天数守恒、分享状态往返稳定,以及无效状态的安全处理。
独立对照
开发期间,公历日期计算会与独立的日历实现进行对照;该对照库仅用于开发,不会进入生产版本。
浏览器与界面
真实浏览器检查覆盖中英文计算流程、键盘与无障碍行为、移动端与缩放布局、分享、复制、错误恢复,以及网络和隐私边界。

这些检查可以提高可信度,但不能证明缺陷不可能存在,也不代表认证或形式化验证。