日期时间计算器
把日历上最容易算错的日期题交给它:给某个日期加减年、月、周、天,算两个日期之间隔了多少天和工作日,或者用生日算出精确到年月日的年龄与下次生日。闰年和月末自动处理,数据不出浏览器。
- 模式
- 加减 · 间隔 · 年龄
- 边界处理
- 闰年 · 月末
- 隐私
- 100% 本地
- 依赖
- 无
加月时优先保留原来的「日」;目标月份没有这一天时,自动收敛到该月最后一天(如 1 月 31 日 + 1 个月 = 2 月 28/29 日)。
总天数按两个日期之间经过的自然日计算;工作日会排除周六和周日。
年龄按整年、整月、整日累计;2 月 29 日出生的人在平年按 2 月 28 日计算。
本次会话
记录只保存在当前页面的内存里,刷新或关闭标签页后即消失。
为日常日期问题而做
一个页面,三种算法
平时要靠掰手指或翻表格才能算清的日期问题,这里输入即得。
任意日期加减
一次完成年、月、周、天的加减,适合算截止日、续费日、提醒日和交付周期。
两个日期差多少
以总天数、周数以及「年月日」三种口径给出两个日期之间的距离。
工作日统计
只算周一至周五,用于排期、SLA 计时和请假天数估算。
精确年龄
把生日换算成几岁几个月几天,并给出下次生日的日期与倒计时。
边界情况自动处理
闰年、月末、周末都由 UTC 日期运算统一处理,结果不会因夏令时差一天。
打开就能用
免注册、无上传,所有计算都在浏览器本地完成。
日期运算的规则
几个关键规则,决定计算结果是否与纸质日历一致。
「加一个月」到底是多少天?
月份天数不固定,所以日期计算以「同一天」为锚点:1 月 15 日 + 1 个月 = 2 月 15 日。目标月份没有这一天时,会收敛到该月最后一天:1 月 31 日 + 1 个月 = 2 月 28 日(闰年 29 日),3 月 31 日 − 1 个月同样是 2 月 28/29 日。
为什么天数、周数和年月日结果对不上?
总天数是两个日期之间固定数量的自然日;周数只是把总天数按 7 分组。年月日差则是顺着日历逐段推进得到的结果,更接近口头表达(1 年 2 个月 3 天),不能简单用除法换算。
工作日是怎么算的?
这里的工作日指周一至周五,不包含法定节假日。各国节日不同,工具不做猜测;如果你的排期需要扣除假期,请在结果上自行减去。
为什么用 UTC 计算?
纯日期没有时区概念。用 UTC 计算可以避开夏令时切换——本地某一天可能是 23 或 25 小时,简单的除法会四舍五入到错误的一天。
常见期限速查表
工作与手续里最常遇到的日期区间,以及决定具体是哪一天的计数口径。
| 场景 | 常见期限 | 计算口径 |
|---|---|---|
| 30 / 60 / 90 天账期 | 30、60、90 个自然日 | 从开票日或交付日起算,先确认起算日当天是否计入 |
| 试用期 / 通知期 | 1–6 个月 | 按月推进而非固定天数,月末会收敛(1 月 31 日 + 3 个月 = 4 月 30 日) |
| 签证或免签停留 | 90 个自然日 | 通常从入境次日起算,离境日一般不计入 |
| 孕期 | 40 周 / 280 天 | 从末次月经首日算到预产期 |
| 退货 / 保修窗口 | 7、14 或 30 天 | 先看清条款写的是自然日还是工作日 |
| 金融结算 T+1 / T+2 | 1–2 个工作日 | 跳过周末与当地法定节假日,日历日期会顺延 |
| 合同「90 天内」 | 90 个自然日 | 写明起算日是否计入,争议通常出在这里 |
合同只写「天」时按自然日理解,并把起算日写清楚。
不产生歧义的日期写法
同样八个数字可能代表两个不同的日子,下面几种写法值得认清。
| 写法 | 示例 | 常见场景 |
|---|---|---|
| ISO 8601 | 2026-10-26 | 接口、数据库、文件名、国际标准 |
| RFC 3339(带时间) | 2026-10-26T14:30:00+08:00 | 带时区的 Web 接口与日志 |
| 日 / 月 / 年 | 26/10/2026 | 英国、欧洲多数国家、澳洲、拉美 |
| 月 / 日 / 年 | 10/26/2026 | 美国、菲律宾,最容易与上一种混淆 |
| 中文写法 | 2026年10月26日 | 中文合同、票据、公文 |
| 英文书写 | 26 October 2026 | 英文合同与证书,月份用文字最稳 |
跨境场景优先用 ISO 8601 或把月份写成文字;纯数字的 DD/MM 与 MM/DD 最容易出错。
常见问题
开始日期和结束日期会包含在天数里吗?
工具给出的是经过的天数:1 月 1 日到 1 月 2 日是 1 天,同一天则是 0 天。如果你需要「首尾都算」(比如酒店住宿晚数),把结果加 1 即可。
闰年和 2 月 29 日怎么处理?
2 月 29 日可以作为输入,加一年会落到下一个平年的 2 月 28 日。年龄计算中,2 月 29 日出生的人在平年按 2 月 28 日过生日。
能算很久以前或很远的未来吗?
公元 1 年到 9999 年之间的日期都可以计算,历史日期和长期规划同样适用,结果基于公历(格里高利历)推算。
可以用来排工作计划吗?
可以用于周一至周五的工作日计数。由于各地节假日不同,工具不会自动扣除节日,请按自己的假期表调整结果。
输入的数据会上传吗?
不会。页面只有前端脚本,日期不会离开浏览器,也不需要账号或服务端存储。
年龄、周年与 2 月 29 日
不同场景对「几岁」的定义不同,先选对口径。
周岁
从生日当天起算,到下一个生日前一天为整 N 岁。2000-05-15 出生,2018-05-15 当天满 18 岁,而不是元旦。
虚岁
传统算法出生即 1 岁,每逢新年加 1 岁,因此可能比周岁大一到两岁。
法定年龄
多数地区在生日当天开始即达到法定年龄,少数按出生时刻计算;涉及合同、证件时以当地规定为准。
周年与 2 月 29 日
周年按年或按月推进,月末会收敛。2 月 29 日出生者,平年通常按 2 月 28 日纪念,但部分司法辖区按 3 月 1 日。
日历小史
为什么「一年」不是正好 365 天,以及 1582 年为什么会凭空少掉十天。
-
公元前 45 年
儒略历
凯撒用太阳历取代罗马阴历,并规定每四年一闰。它每年比回归年长约 11 分钟。
-
325 年
尼西亚会议
教会统一复活节日期,历法累积的偏差随后成为宗教与民事问题。
-
1582 年
格里高利历改革
教皇格里高利十三世删掉十天——10 月 4 日之后直接是 10 月 15 日,并加入百年 / 四百年闰规则。英国及其殖民地到 1752 年才改用。
-
1970 年
Unix 纪元
1970-01-01 00:00 UTC 成为 Unix 时间的零点。它是一个时刻而非日历日,所以时间戳必须带时区。
-
1988 年
ISO 8601
标准统一了 YYYY-MM-DD 和以周一为一周起点的周数编号,至今用于薪资、物流与项目排期。
今天日常使用的就是格里高利历;每四年出现的闰年规则,来自 1582 年这次修正。
相关工具
需要的是具体时刻而不是日期?这几个工具正好互补。