日期计算器
日期差、日期推算、年龄与倒数日四合一;输入即算,所有计算都在你的浏览器里完成,不上传
两个日期相差多少
日期计算最常见的几种场景
算工龄、租期、项目周期、孕周、还款日。日常里要数天数的场合,几乎都能归成三类:① 知道首尾两天,问「一共多少天」——入职到离职、起租到退租、合同签订到到期;② 知道开始日与一段时长,问「到哪天」——今天起 90 天后的还款日、签约日加 24 个月后的到期日;③ 知道出生日期或起始日期,问「现在多少岁 / 过去了多久」。本页把这三类做成了四个模式,输入即算,不需要点「计算」按钮,改一个数字结果就跟着变。
「含首尾」和「不含首日」为什么差一天。同一个区间,天数有两种同样常见的数法:含首尾是把开始日和结束日都算进去(1 日到 3 日 = 3 天,这是请假、住院、工期最常见的口径);不含首日只算「从开始日之后到结束日」,也就是把开始日当作第 0 天(1 日到 3 日 = 2 天,这是「过了几天」「间隔几天」的口径)。两者永远刚好差 1 天,本页两个数都给出,你按自己场景挑——写进合同或表格前,务必和对方确认是哪一个口径,这是日期纠纷里最常见的一处误会。
工作日为什么不是「天数减去周末」。本页的工作日只排除周六与周日,用整周 5 天加零头的方式精确计数,所以哪怕区间里跨月、跨年、跨闰年也不会数错。但要特别注意:它不包含法定节假日,也不计算调休上班。中国每年的放假安排由国务院办公厅单独发布,元旦、春节、清明、劳动节、端午、中秋、国庆的具体日期与调休补班日年年不同,有的年份还会有临时调整。任何不在线更新这张表的工具,只要硬编码节假日就一定会过期;与其猜错,不如明确告诉你「这里只扣周末」。所以涉及法定假日的工期、账期,请在本页结果上再手工扣掉这几天(或去查当年的放假通知)——「还剩 10 个工作日」在本页的准确含义是「还剩 10 个周一至周五」。
月份加减的「月末溢出」是怎么处理的。日期加减天、周永远不会有歧义,但加减「月」和「年」会碰到一个绕不开的问题:1 月 31 日加 1 个月是 2 月几日?2 月根本没有 31 日。常见的处理有三种——夹到当月最后一天(2 月 28/29 日)、往后溢出到下个月(3 月 2/3 日)、或直接报错。本页统一采用夹到当月最后一天,这也是 Excel 的 EDATE 函数、多数银行账期与合同期限计算采用的规则:3 月 31 日减 1 个月 = 2 月 28/29 日,8 月 31 日加 1 个月 = 9 月 30 日,闰年 2 月 29 日加 1 年 = 次年 2 月 28 日。它有一个必然的副作用:29/30/31 日出生的人,生日前的那个月按此规则会落到 28 日附近,看起来「少了一天」;这不是算错,而是规则本身如此。你如果用的是别的口径(例如到期日顺延到 3 月 1 日),请在本页结果上手工调整一天。
年龄:周岁与虚岁为什么差一岁。周岁(法律、证件、入学、退休都用它)按「过生日才长一岁」计算,生日当天即长一岁,生日前一天都还差一天。虚岁在民间是另一套算法,且各地各家用得并不统一;本页给的是最常见的简式口径:出生即 1 岁,此后每跨一次公历新年加 1 岁(所以年末出生的人在春节前后就已「2 岁」)。民俗里更讲究的算法以农历新年(春节)为分界,个别地区还有以立春为界的说法,因此本页的虚岁可能与长辈的说法差 1 岁——它只适合用来理解说法差异,不适合填表。生肖同理,本页按公历年给出,若以立春或春节为界会有不同结果,页面已标注,请勿当作唯一答案。
为什么不上传到服务器。日期计算不需要任何后端能力,本页的核心计算全部是一段纯 JavaScript 函数,在你打开的这个页面里执行,输入框里的内容不会离开你的设备(打开浏览器开发者工具的 Network 面板可以看到整页没有任何提交请求)。这也是本页唯一会「记住」东西的地方:倒数日模式把目标日期与事件名写进网址的 # 片段,方便你收藏或分享,而 # 之后的内容浏览器不会发送给服务器,页面本身也不读取你的姓名、手机号或任何其它信息。
常见问题
因为两者只差一个开始日:含首尾 = 结束日 − 开始日 + 1,不含首日 = 结束日 − 开始日。请假 1 日到 3 日、住院 3 天、工期 3 天这类「占了几天」的场景用含首尾;「隔了几天」「过了几天」「距今几天」用不含首日。本页两个数并排给出,规则写在数字旁边,避免你复制错口径。
因为本页(以及 Excel 的 EDATE、多数银行与合同口径)采用「夹到当月最后一天」:目标月份里没有 31 日,就取该月能提供的最晚一天。平年是 28 日,闰年是 29 日;同理 3 月 31 日减 1 个月 = 2 月 28/29 日,8 月 31 日加 1 个月 = 9 月 30 日,闰年 2 月 29 日加 1 年 = 次年 2 月 28 日。如果你要求「到期日一律顺延到下月 1 日」或「提前到月末」,请在这个结果上手工调一天,本页不会替你改口径。
因为节假日安排每年由官方单独发布且会临时调整,本地工具无法保证永远正确;写死一张过期表比不写更危险。本页的工作日严格定义为「区间内的周一至周五」,用整周 5 天 + 零头的算法精确计数,不受跨月跨年影响。需要精确工期时,请在本页结果上再手工扣掉法定节假日、加上调休补班日。
本页虚岁用的是简式口径:出生即 1 岁,此后每跨一次公历新年(1 月 1 日)加 1 岁。民俗里更通行的算法以农历新年(春节)为分界,也有以立春为界的说法,因此年末出生的人在春节前后会与长辈的说法差 1 岁。周岁(生日当天长一岁)才是证件、入学、退休使用的口径,本页以周岁为主要结果。
只保存目标日期与事件名,写在网址 # 之后,形如 #d=2026-06-07&t=高考。# 片段不会被浏览器发往服务器,页面也不读取其它任何信息。把整条链接发给别人,对方打开就会看到同一个倒数日;把事件名留空,链接里就只有日期。
会在输入框下方就地提示「日期不存在」,结果区停止更新,而不是悄悄把它当成 3 月 2 日继续算。日期选择器通常也不允许你选出不存在的日子;如果你手输或用脚本填入,页面的校验同样会拦住它。所有日期一律按本地时间(你设备所在时区)构造与比较,不经过 UTC 转换,因此不会出现差一天的情况。