工具
指南

日期差计算器

生活

计算两个日期之间的差值,或在日期上加减天/周/月/年/工作日。所有日期运算均使用 UTC,结果在任何时区都一致。

100% 客户端 无后端
mode
单位
    本页内容

    什么是日期计算器?#

    日期计算器回答的是一个看起来简单、其实没那么简单的问题:两个日期之间到底隔了多久?麻烦在于”多久”并不是一个数字。47 天,同时也等于 1 个月零 17 天、6 周零 5 天、或者 33 个工作日——哪个数字重要,要看你是在跟项目截止日、算某人的年龄,还是在数离上线还有多少个工作日。

    本页一次给出所有这些读数,另外还有第二种模式,可以把一个日期向前或向后推 N 天、N 周、N 个月、N 年或 N 个工作日。所有计算都在 UTC 下、按整日进行,所以结果绝不会在夏令时切换时悄悄偏掉一个小时。

    怎么使用#

    顶部的工具栏在两种模式之间切换。

    相差模式——回答”两个日期之间隔多久”:

    1. 起始日期结束日期(都是 YYYY-MM-DD)。点 今天 可以把当前日期填进任意一框。
    2. 勾选你想看到的 单位工作日(周一到周五)。用不到的单位取消勾选,结果区就不会太挤。
    3. 包含结束日,起始日和结束日都会算进去(比如”我 1 号到 10 号休假”通常说的是 10 天,而不是 9 天)。不勾就是纯经过时间。

    加减模式——回答”从某天起推 N 个单位是哪天”:

    1. 起始日期 里填基准日期。
    2. 数量,正负整数都行(往前推就用负号)。
    3. 单位:天、周、月、年、工作日。工作日会按方向自动跳过周六周日。

    右边的结果卡片会把主数字显示得最大,其他勾选的单位在下面列出。加减模式下会显示目标日期,同时给一份 ISO YYYY-MM-DD 格式,方便直接复制。

    主要特性#

    • 一次给出六种读数。 天、周、月、年、工作日,以及”年+月+日”的日历式拆分——不是只给一个总数。
    • 时区无关。 全部按 UTC 整日计算,东京的用户和檀香山的用户对同一组输入看到的是同一个天数。没有夏令时漂移。
    • 工作日计数。 用的是闭式公式(周一到周五),就算跨度几十年也很快——不是一天一天地循环。
    • 结束日含/不含一键切换。 最后一天算不算,一个勾控。
    • 月末钳位。 1 月 31 日加一个月,得到的是 2 月 28 日(闰年 29 日),这是大家都预期的行为,而不是 3 月 3 日。
    • 加减模式支持五种单位。 包括工作日——你估算”十个工作日后是哪天”时真正要用的那个单位。
    • 不上传、不调日历 API。 纯日历算术,全部在浏览器里完成。

    实例演示#

    一个迭代周期从 2026-06-20 跑到 2026-08-06。在相差模式里填这两个日期,所有单位都勾上、包含结束日 不勾。结果卡片会显示:

    • 47 天
    • 6 周 零 5 天
    • 1 个月 17 天(日历式拆分)
    • 33 个工作日(周一到周五)

    接着切到 加减模式 规划下一个里程碑。起始日期2026-08-06数量 设为 30单位工作日。结果是 2026-09-17——也就是 8 月 6 日之后第三十个工作日,周末已经自动跳过。把单位换成 再试一次,得到的是 2026-09-05——“30 天”和”30 个工作日”差了两周还多,这个对比一目了然。

    常见问题#

    为什么要用 UTC?我只关心本地日期。#

    日期是按 UTC 午夜的整日来存储和计算的。这是故意的:这样一来”一天”对所有人都是同一个单位,跟时区无关。如果用本地时间,时区比 UTC 慢的用户在夏令时切换时可能会看到日期标签错一天。UTC 把这一整类 bug 都规避掉了——而且你只输入日期不输入时间,结果上你也感知不到差别。

    工作日是怎么数的?#

    工作日是指周一到周五(含)。周六周日一律不算,不分国家。公共假期不会减掉——本工具没有节日日历,因为节日是按地区不同的。需要扣除法定假日的话,请从工作日数字里手动减。

    “包含结束日” 是干什么的?#

    它让起始日和结束日都算进跨度。不勾时是纯经过时间(6 月 10 日到 7 月 10 日 = 30 天);勾上时两端都算(6 月 10 日到 7 月 10 日 = 31 天)。“我出去几天”这类问题一般要勾上;“项目做了多久”这类问题一般不勾。

    月末那天加一个月会怎样?#

    会自动钳到目标月份的最后一天。2026-01-31 加一个月是 2026-02-28(2026 不是闰年);2026-03-31 加一个月是 2026-04-30。这跟几乎所有日历软件的行为一致,不会硬造出一个不存在的”4 月 31 日”。