跳到内容

📅 日期计算器

一键计算两个日期之差、日期加减、工作日 (排除周末和节假日)、年龄。自动识别 YYYY-MM-DD / YYYY/MM/DD / YYYY年MM月DD日,支持时区。

完全免费 无需注册 浏览器内完成 5 种语言 深色模式

🔒 关于隐私

💡 自动识别多种格式

📖 常见的坑

计算两个日期之差、对日期做加减、统计工作日(排除周末与你提供的节假日),以及推算年龄。可自动识别 YYYY-MM-DD / YYYY/MM/DD / 日式日期写法,并可指定时区。处理全部在浏览器内完成。日期计算没有唯一正解——一段期间算几天、跨月加法该怎么处理,都是由约定决定的,与某个实现碰巧如何表现是两回事。

情形 会发生什么 怎么处理
天数差了一天 「从 4 月 1 日到 4 月 3 日」是 2 天还是 3 天?做减法得 2,但日常说的「3 天」是把 1 日、2 日、3 日都数进去的结果。差别在于「首日算不算」,而答案因行业与语境而异:住宿天数是减法(2 晚),出勤天数含两端,合同期限则以合同的定义为准。日本民法以「首日不算入」为原则(从次日起算),但实务中合同另行规定不同算法的情况反而更多,所以知道法律上的默认规则也定不了答案。 请在规格书或合同里写明「首日是否算入」。这不是由实现来决定的事,而是应当事先达成的共识。在实现一侧,把意图编进变量名最为有效:写 nightsinclusive_days 而非 days,读的人就不会看错。测试中务必包含「同一天」的用例——「4 月 1 日到 4 月 1 日」是 0 天还是 1 天,这一条就能把规格钉死。差一天的边界照样能跑,没有这条测试,你就得等到线上才发现。
按月加减的结果不符合预期 1 月 31 日的一个月后是哪一天?2 月 31 日并不存在,因此各实现会给出 2 月 28 日(钳到月末)3 月 3 日(加 31 天后溢出)3 月 1 日它们都不算错,只是约定不同。更麻烦的是这个运算不可逆「往后一个月再往前一个月」未必回到原来的日期——1 月 31 日 → 2 月 28 日 → 1 月 28 日。把订阅扣款日设为每月 31 日,你每个月都会撞上这个问题。 做按月加减之前,请先决定「月末怎么处理」。常见的选择是把不存在的日期钳到月末,这最接近直觉,也是多数库的默认行为。在扣款、合同续约这类「日期本身有含义」的场景中,最稳妥的设计是干脆不让用户选 29 日及以后——众多订阅服务正是为了规避这个问题才这么设计的。若确实需要月末结算,请把它作为另一个概念来实现:定义为「次月的最后一天」,而不是「1 月 31 日 + 1 个月」,歧义就消失了。
工作日的计算因国家和年份而不同 节假日每年都在变。在日本,好几个节日落在「第 n 个星期一」,因而日期逐年移动;春分与秋分则由天文计算确定,要到前一年的官报才最终定下来。此外,节日撞上周日会产生补休,夹在两个节日之间的工作日也会变成假日。跨国之后情况完全不同:同样是「5 个工作日」,在日本、美国、中国、伊斯兰地区结束的日期各不相同——尤其是中国的春节与中东的周五休息,与日本的直觉相去甚远。 本工具的节假日清单由你自己录入,清单一旧,结果也就旧了。日本的节假日由内阁府以 CSV 形式公开,请据此逐年更新——「沿用去年的清单」是这类计算中最常见的错误。当交期计算涉及多个国家时,请务必按国家分别用各自的清单计算——「工作日」这个词一样,所指的日子却不一样。而当计算结果将成为交期或付款日时,请务必与对方确认具体日期本身——约定「到 X 月 X 日为止」而不是「5 个工作日后」,数法之争就不复存在了。

即便你以为自己只在处理「日期」,时区也会插进来。2024-01-01 按 UTC 还是按日本时间解释,决定了同一个瞬间究竟是 1 月 1 日还是 12 月 31 日——日本时间 1 月 1 日 8 点,在 UTC 还是 12 月 31 日 23 点。服务器用 UTC、用户在日本的配置下,「今日统计」会在当地时间 9 点才切换。往数据库里存「日期」时,请使用不带时间的 DATE 类型,或统一为 UTC。还有一点:生日与纪念日不是「瞬间」,而是「当地日历上的日期」——1990 年 5 月 3 日出生的人,无论身在何处生日都是 5 月 3 日,坐飞机跨过日界线也不会改变。给这类值附上时区,从海外访问时就会差一天——请记住,有些场景里「不带时间」才是正确的建模方式。

📖 使用方法

  1. 1
    选择模式
    从上方选项卡选择期间/加减/工作日/年龄。
  2. 2
    输入日期
    支持多种常用格式。
  3. 3
    计算
    点击计算按钮。

❓ 常见问题

日期会发送到服务器吗?
不会。所有计算均在浏览器中完成。
闰年和月末如何处理?
闰年自动判定。月末超出按当月最后一天处理。
节假日如何输入?
每行一个日期。周末自动排除。

🔗 相关工具

🐛 此工具出现问题了吗?

免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。

※ 为复现问题,浏览器信息 (UA / 屏幕 / 语言 / URL) 将自动发送