猫工具站
帮助中心 猫Blog 关于我们 广告合作 EN

📅 日期计算器

计算两个日期之间的天数差,或在指定日期上加减天数/月数/年数。

相差天数
—
相差周数
—
相差月数
—
相差年数
—
结束日期
—
计算结果
—

相关指南

BMI、年龄、日期三台计算器:哪些数字能信,什么时候不能信
BMI 页是先四舍五入再分档,切单位会把你的数字改写掉;年龄页的计数器锚在 UTC 零点,清空输入框后秒表还在跑;日期页按本地零点算天数,遇到夏令时会少一天。下面每个数字都是在页面本身上跑出来的。

Advertisement

一页两件事

上半部分算两个日期之间隔了多久,下半部分从某一天出发往前或往后推若干天、月或年。两个区域各自独立,日期选择框默认都填今天,旁边还有昨天、今天、明天三个快捷按钮。

两个日期都会顺带标出星期。

天数是按本地零点算的,还差着「含不含结束日」

两个日期分别被解析成各自当天的零点,差值除以 86400000 后向下取整,得到原始天数。页面默认勾选「包含结束日期」,勾选时结果再加 1 天——同一段时间,勾与不勾正好差一天,算请假、算存储期限之前先确认这一项。

如果结束日期早于起始日期,页面不返回负数,而是把天数位直接写成「起始日期需早于结束日期」。

周数是总天数除以 7 向下取整,余数单独写成「余 N 天」。

月数和年数是两套口径拼出来的

月数按日历推进:从起始日不断加一个月,直到超过结束日,走到的步数就是整月数。年数同理,按整年推进。这两个整数部分是严格日历意义的。

但后面的余数天数换了一种算法:它用总天数减去「月数 × 30.44」再四舍五入,年数余量则减去「年数 × 365.25」。也就是整数按日历、余数按平均长度,两边口径不完全一致。跨月份长度不均时,余数会比你在日历上一天天数出来的结果多或少一两天。

常见问题

「包含结束日期」到底该不该勾?
看你要的是「跨了几天」还是「有几个日子」。7 月 1 日到 7 月 3 日,不勾是 2 天(相差),勾选是 3 天(住店三天、请假两天这类场景各自对应其中一种)。默认是勾选状态。

结束日期填在开始前面会怎样?
不会算出负数。页面判断到时间差为负时,把天数位置改成一句提示「起始日期需早于结束日期」,周月年三个格子留空,需要自己调换两个日期。

为什么「几个月零几天」跟我在日历上数出来的不一样?
整月数是按月推进日历算的,但余下的天数是用总天数减去月数乘 30.44 再四舍五入得来的。经过 31 天或 28 天的月份时,两种口径必然对不齐,误差在一两天之内。要精确请只取天数那一项。

从 1 月 31 日加一个月为什么到了 3 月?
日期推算是直接把月份加 1 交给 Date 对象处理,结果日期超出目标月长度时会自动溢出到下一月:2026 年 1 月 31 日加一个月落到 3 月 3 日,闰年则落到 3 月 2 日。这个工具不会把日期钳制到月末。

加减年份能不能算退休日期、合同到期这种?
能给出结果,但要注意上面那条月末溢出的行为:起点是某月 29 到 31 日时,加月份或加年份可能落到再下一个月初。正式合同期限建议用天数模式核对一遍,或者把起点改到该月 28 日之前。