📅 日期计算器
一键计算两个日期之差、日期加减、工作日 (排除周末和节假日)、年龄。自动识别 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 晚),出勤天数含两端,合同期限则以合同的定义为准。日本民法以「首日不算入」为原则(从次日起算),但实务中合同另行规定不同算法的情况反而更多,所以知道法律上的默认规则也定不了答案。 | 请在规格书或合同里写明「首日是否算入」。这不是由实现来决定的事,而是应当事先达成的共识。在实现一侧,把意图编进变量名最为有效:写 nights 或 inclusive_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
选择模式从上方选项卡选择期间/加减/工作日/年龄。
-
2
输入日期支持多种常用格式。
-
3
计算点击计算按钮。
❓ 常见问题
日期会发送到服务器吗?
不会。所有计算均在浏览器中完成。
闰年和月末如何处理?
闰年自动判定。月末超出按当月最后一天处理。
节假日如何输入?
每行一个日期。周末自动排除。
🔗 相关工具
🐛 此工具出现问题了吗?
免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。
✅
感谢您的反馈!
已送达运营者,将用于改进工具。