日期时间计算:相差天数、工作日与倒计时该怎么算
两个日期相差几天?含不含首尾?工作日要不要剔除节假日?本文讲清日期计算的常见口径差异与对应工具。
核心要点
- 日期计算最容易出错的不是算法而是口径:相差天数是否包含首日,必须在业务场景中明确约定。
- 多数「工作日」工具只排除周六周日,不会自动扣除法定节假日与调休,涉及交付承诺时要人工核对放假安排。
- 闰年规则是能被 4 整除且不能被 100 整除,或者能被 400 整除,这决定了某些年份的 2 月多一天。
日期计算最容易出错的不是算法,而是口径:相差 3 天到底算不算今天、周一到周五是不是工作日、跨月跨年有没有考虑闰年。口径没说清,数字对了也没意义。
三类需求
| 需求 | 说明 | 工具 |
|---|---|---|
| 相差多少天 | 两个日期之间的自然日差值 | 日期差 |
| 顺延 / 倒推日期 | 加若干天得到目标日期 | 加天数 |
| 只算工作日 | 剔除周六周日后的天数 | 工作日天数 |
| 按工作日顺延 | 常用于合同期限、工单时限 | 加工作日计算 |
| 还剩多少天 | 距目标日期的正倒数 | 倒计时 |
| 精确年龄 | 精确到年月日 | 精确年龄计算 |
必须确认的两件事
- 是否含首日:今天到明天,有人算 1 天有人算 2 天。合同与工期类场景请在文中明确约定。
- 节假日不算工作日的例外:多数「工作日」工具只排除周六周日,不会自动扣除法定节假日与调休。涉及交付承诺时请人工核对当年放假安排。
顺带能查的
星期几、ISO 周用于排期;时间戳转日期与日期格式化处理接口返回的时间值;闰年判断解释为什么有些年份的 2 月多一天——规则是「能被 4 整除且不能被 100 整除,或能被 400 整除」。
常见问题
相差天数和倒数日的结果为什么差一天?
多半是「是否包含当天」的口径不同。今天到明天,按日期差是 1 天,若把起止两天都算进去则是 2 天。合同与工期类场景务必在文本里写清口径。
工作日计算会自动扣掉法定节假日吗?
通常不会。多数工具只排除周六与周日,法定节假日与调休安排需要人工核对当年的国务院放假通知后另行扣除。
跨时区的日期怎么算?
先统一折算到同一时区再计算。涉及接口开发建议全程使用 UTC 存储,只在展示层按用户所在时区转换。
时间戳和日期怎么互转?
Unix 时间戳是从 1970 年 1 月 1 日 0 时(UTC)起算的秒数,可用时间戳转换工具双向转换。注意区分秒与毫秒,前端常见的是 13 位毫秒值。
最后更新:2026-09-19