通过MCP连接 →

输入计算

数学公式

广告

结果

年龄
26 years, 5 months, 25 days
两个日期之间的时间间隔
26
5
25

这个计算器能做什么

这款"年龄精确计算器"可以算出从出生日期(或任意起始日期)到指定日期之间,到底经过了多长时间。它不会只给你一个带小数的数字,而是把时间差拆解成完整的年数、完整的月数和剩余的天数——也就是我们平时形容年龄时最自然的说法,比如"32岁4个月零18天"。

使用方法

先分别填入出生日期的年、月、日,再填入目标日期(默认就是今天)。点击"计算",结果就会按年、月、天分项显示出来。一般来说,目标日期应当不早于出生日期。

计算原理详解

计算时先对各个部分逐一相减:年 \(= Y_2 - Y_1\),月 \(= M_2 - M_1\),天 \(= D_2 - D_1\)。由于每个月的天数不同、年份还有可能是闰年,所以需要两次"借位"来修正出现的负数。计算遵循以下规则:

$$D = D_2 - D_1 + \text{daysInPrevMonth},\quad M = M - 1$$$$M = M_2 - M_1 + 12,\quad Y = Y - 1$$

如果天数为负,就借入目标日期前一个月的天数,并把月数减1;如果此时月数又为负,就加上12并把年数减1。计算过程严格遵循闰年规则(能被4整除、但不能被100整除,除非同时能被400整除),因此二月会被准确地按28天或29天来计算。

时间轴显示两个日期被拆分为年、月、日三段
年龄按两个日期之间的完整年数计算,然后是剩余月数,最后是剩余天数。

实例演示

出生日期为2000-01-15,目标日期为2024-03-10。最终结果可用下式表示:

$$\text{Age} = (Y_2 - Y_1)\ \text{years},\ (M_2 - M_1)\ \text{months},\ (D_2 - D_1)\ \text{days (with borrow)}$$

先算天数:\(10 - 15 = -5\),于是向2024年的二月借位(2024年是闰年,二月有29天):\(10 - 15 + 29 = 24\) 天,同时月数减1。再算月数:\(3 - 1 - 1 = 1\)。最后算年数:\(2024 - 2000 = 24\)。最终结果:24岁1个月零24天。

图示展示日历各列之间天数和月数的借位
当天数或月数为负时,向更大的单位借位(一个月约为30天,一年为12个月)。

关键术语解释

出生日期
两个日期中较早的一个——人(或物品)开始的日期。在公式中,它提供从参考日期减去的 birthYearbirthMonthbirthDay 值。
参考日期
您测量到的参考日期(通常是今天)。它提供 toYeartoMonthtoDay。年龄是从出生日期到包括这一时刻为止经过的时间。
闰年
包含 366 天的一年,添加了 2 月 29 日。在公历中,如果一年能被 4 整除,则该年是闰年,但世纪年除外,世纪年必须也能被 400 整除(因此 2000 年是闰年,但 1900 年不是)。当 2 月 29 日落在时间间隔内时,闰年会影响天数计算。
进位调整
保持结果非负的调整。如果天数差值 \(D<0\),您从一个月进位:将前一个月的天数加到 \(D\) 并将 \(M\) 减少 1。如果月份差值 \(M<0\),您从一年进位:将 12 加到 \(M\) 并将 \(Y\) 减少 1。这反映了普通减法中的进位。
daysInPrevMonth
参考月份前一个日历月的长度(28、29、30 或 31 天)——在进行天数进位时加到 \(D\) 的值。由于月份长度各不相同,"完成"不完整月份的确切天数不是固定的,这就是为什么年龄(以天数计)不能仅从年份和月份推导出来。
经过的月份与十进制年份
经过的月份计数实际完成的整个日历月份(例如 18 个月),保留真实的月份边界。十进制年份将总天数除以平均年长度(例如 365.25)以得出类似 1.52 年的数字。十进制年份便于取平均值,但会丧失确切的日历结构;(年、月、日)分解精确到实际日历。

常见问题

会处理闰年吗? 会。二月的天数和借位计算都完全遵循闰年规则。

如果目标日期早于出生日期会怎样? 结果可能出现负数;要得到有意义的年龄,请把目标日期设为不早于出生日期。

为什么要拆成年、月、天? 因为这正符合人们日常表达年龄的习惯,比单独一个带小数的"年数"更直观易懂。

最后更新: