7 月 1 日到 7 月 2 日可以是相隔 1 天,也可以在活动清单中占用 2 个日期。差异来自计数口径,而不是谁的算术一定错误。
实际间隔与包含首尾日期
实际间隔天数计算从开始日期到结束日期经过了多少次日期边界。7 月 1 日到 7 月 2 日相隔 1 天,同一天到同一天相隔 0 天。
若行程、住院或活动把开始日和结束日都算作占用日期,则需要包含首尾,结果比实际间隔多 1。使用前先明确问题。
只包含一端的计数
许多截止日期口径排除开始日、包含结束日;另一些库存或排班规则可能相反。两种口径在普通正向日期范围中往往等于实际间隔,但文字含义不同。
共享结果时写明“开始日不计、结束日计入”等规则,比只给出一个数字更可靠。
为什么日期计算要避开夏令时误差
日期问题通常只关心公历日,不关心某天有 23、24 还是 25 小时。程序应把日期标准化到一致边界后比较,避免夏令时变化造成一天误差。
如果问题本来就是两个时刻相差几小时,则必须收集时间和时区,不能用纯日期工具替代。
工作日不是简单排除周末
最基础的工作日算法排除星期六和星期日。加入节假日后,必须指定国家、地区、年份和补休规则。
美国联邦节假日、银行营业日、证券交易日、学校日历和企业排班并不相同。工具应给节假日选项清楚命名。
日期加减与日期之间的天数
已知两个端点时使用“日期之间”模式;已知一个起点和偏移量时使用“增加或减少天数”模式。工作日偏移还要决定是否跳过节假日。
确认方向、首尾规则和日历日或工作日,是避免实际项目争议的三个关键步骤。
常见的一天误差怎么排查
先检查是否把今天算入、是否包含结束日,再检查浏览器解析的日期格式和时区。不要把带时间的字符串与纯日期直接混算。
合同、签证、法院或税务期限可能有专门顺延规则。通用天数计算只能帮助核对基础日期,正式期限仍以主管机构规则为准。
资料来源与延伸阅读
以下资料用于核对本文中的事实、定义、历法边界或数据口径。
- 美国海军天文台:公历与闰年用于核对公历月份、星期循环和闰年规则。
- 国际标准化组织:日期与时间表示用于说明清晰、不易混淆的日期与时间写法。
- 美国国家标准与技术研究院:时间与频率用于说明时间单位、民用时间和时区背景。
