跳到主要内容

日期间隔怎么算:两个日期相差天数、工作日与完整月份的口径

讲清楚两个日期相差多少天周月年,以及含头含尾的差异、工作日的算法、纪念日和项目周期的口径,配真实例子,让你写进工单或合同不会被同事质疑。

发布于 作者 李雷
#日期差 #相差天数 #工作日计算 #项目排期 #纪念日

日期间隔怎么算:相差天数、工作日和完整月份的口径

我做项目排期那几年,被同一个问题坑过不止一次:两个人对着同一份合同,一个说"还有 30 天",另一个说"31 天",争半天才发现是含头含尾的口径不一样。日期差看着是小学算术,真要写进合同、工单或汇报里,口径不统一就会出岔子。这篇把几种常见算法讲清楚,顺便配上能直接核对的工具。

相差多少天:先定义"差"指什么

最基础的问题:两个日期相差多少天。这里有个容易忽略的点,纯粹的天数差是用结束日期减去开始日期,同一天到同一天结果是 0 天,不是 1 天。

举个能复算的例子。从 2026-01-01 到 2026-06-13,中间跨了 1 月到 5 月的整月加上 6 月的 13 天:31 + 28 + 31 + 30 + 31 + 13 = 164 天。注意 2026 不是闰年,2 月按 28 天算,所以结果是 163 天的间隔(用结束减开始,不含开始当天)。如果你按"含头含尾"理解,把开始那天也数进去,就是 164 天。这一天的差别,正是很多争论的根源。

你可以直接在 /zh/t/date-difference/ 里输入这两个日期核对,它会同时给出年月周天小时分钟,不用自己掰着指头算闰年。

含头含尾:这一天到底算不算

含头含尾(英文常说 inclusive counting)是日期差里最隐蔽的坑。法律和财会的惯例里,"X 天有效期"通常含两端,比如签约日 1 月 1 日,有效期 30 天,到期日往往是 1 月 30 日而不是 1 月 31 日。但纯数学的间隔是开区间,1 月 1 日到 1 月 31 日的间隔是 30 天。

所以一个稳妥的做法是:先用工具拿到精确的间隔天数,再根据你的业务口径决定要不要加 1。同一天到同一天显示 0 天是对的,如果你的流程把首尾两天都算上,就在结果上加 1。把这条写进备注,后面没人会再来质疑。

工作日:排除周末,但别指望它扣节假日

排项目、估请假、算交付窗口时,自然日往往不够用,真正要数的是工作日。工作日模式会排除周六和周日,给你一个落在工作日里的数。这对 SLA、账期、物流窗口的粗估很实用。

但这里有一条务必记牢:工作日模式只排除周六日,不会自动扣法定节假日。原因很简单,节假日按国家、公司、年份逐年变化,2026 年的清明和 2027 年的清明不在同一天,一个通用工具没法替你判断你在哪个地区、放哪些假。正确流程是先拿到排除周末的工作日数,再按你所在地区的放假安排手动扣减。需要按日期数倒计时的场景,可以配合 /zh/t/countdown-timer/ 一起用。

完整月份:不是天数除以 30

很多人算月份喜欢用天数除以 30,这会出错。日期差里的月份按日历边界算完整自然月。一个经典例子:从 1 月 31 日到 3 月 1 日,是 1 个月零几天,而不是 2 个月,因为 2 月不满一个完整月。这跟法律和财会"X 个月零 Y 天"的写法是一致的。

涉及合同期限、试用期、账期时,这个口径尤其重要。试用期"3 个月"通常指自然月,从 3 月 15 日入职,试用期到 6 月 14 日,而不是简单加 90 天。把自然月和精确天数分开看,沟通时就不会一个按月一个按天各说各话。

纪念日和项目周期:换个角度看间隔

日期差不只服务于冷冰冰的合同。算纪念日、入职周年、项目里程碑,本质都是同一件事:看两个日期隔了多远。把结果拆成年月周天小时分钟,比单独甩一个总天数更好读,也更适合写进汇报或发给非技术的同事。

如果你专门要数入职或合作满了多少年,/zh/t/work-anniversary-calculator/ 会更对口,它针对周年这一个场景做了优化。需要算人或事物的年龄,则用 /zh/t/age-calculator/。这几个工具底层都是同一套日期运算,只是按不同场景把结果整理成了不同的样子。

小结

日期差真正难的不是算术,是口径。先想清楚三件事:天数是开区间还是含头含尾、月份按自然月还是按天数除以 30、工作日要不要再手动扣节假日。把这三点在结果旁边标注清楚,无论是写合同还是排项目,都能省掉一轮来回核对。所有计算都在浏览器本地完成,日期不会上传,放心把它当成你日常排期的随手工具。


Made by Toolora · Updated 2026-06-13