跳到主要内容

两个生日相差几岁:年龄差精确到天的算法

算两个人的年龄差,不该只用出生年份相减。本文讲清情侣和兄弟姐妹差几岁、不同生日如何精确到年月日、为什么年份相减会偏一岁,并给出真实输入输出例子。

发布于 作者 李雷
#年龄差 #年龄计算 #日期计算 #生日

两个生日相差几岁:年龄差精确到天的算法

朋友问我和我对象差几岁,我顺口说"差五岁"。后来真翻了两个人的身份证,生日是 1991-08-02 和 1996-11-19,算下来其实是 5 年 3 个月 17 天。说"五岁"没错,可一旦要填表、写家谱、做正式记录,这个"大约"就不够用了。问题出在大多数人算年龄差只做一件事:拿两个出生年份相减。这篇就讲清楚为什么年份相减会骗人,以及精确到天该怎么算。

年份相减为什么经常差一岁

直接用 1996 减 1991 得到 5,看着干脆,但它丢掉了月和日。1991 年 8 月出生的人,在 1996 年 11 月出生的人过完生日之前,两人的实际岁数差其实只有 4 岁多。年份相减默认两个人都已经过完今年的生日,可现实里很少这么巧。

举个更极端的例子:1990-03-15 和 1992-03-14 出生的两个人,年份相减是 2,但第二个生日 03-14 比第一个的 03-15 早一天,所以到 1992-03-14 这天,前者还差一天才满 2 岁。精确算下来是 1 年 11 个月 28 天,不是 2 年。任何认真的场合,这一天的差别都不能抹掉。

精确到天怎么算:满整段才进位

正确的做法和你的法定年龄用的是同一套规则:满整年才算一年,满整月才算一月,剩下不满一个月的算天。把较晚那个生日当起点,数到较早那个生日,看走过了几个完整的年、几个完整的月、再剩几天。

我习惯用 年龄差计算器 直接出结果。它会自动识别谁年长,所以先输哪个生日都无所谓,交换两个输入,答案一模一样。

一个真实的输入输出例子

拿前面那对情侣的生日跑一遍:

  • 输入 A:1991-08-02
  • 输入 B:1996-11-19

输出:

  • 日历差距:5 年 3 个月 17 天
  • 总天数:1934 天
  • 相对百分比:年长者按今天的岁数算,比年幼者大约大 16%(这个数每年都在变,后面解释)

注意"5 年 3 个月 17 天"和"1934 天"是同一个差距的两种写法。填那种问"相差多少天"的表格,要的是后者;写一句自然语言的描述,用前者。工具两个都给,你按用途复制对的那个,别自己心算取整。

情侣、兄弟姐妹、名人:同一个算法

不管对象是谁,精确年龄差的算法是同一个,区别只在你关心哪个输出。

  • 情侣:多数人想知道"到底差几岁",年月日的分解最直观,顺便看看相对百分比怎么随时间走。
  • 兄弟姐妹:填家谱要确切间隔,比如 2 年 11 个月 4 天,加上备注栏要用的总天数,而不是"大概三年"。
  • 名人或历史人物:写文章需要一句有出处的差距描述,6 年 4 个月 30 天比"大约六年半"读起来干净,还能把日期写进分享链接让校对者复核。

百分比为什么会变,而年月日不会

有个反直觉的点:相对百分比不是这对人固定不变的属性。它是年长者相对年幼者此刻岁数大了多少。一个 30 岁一个 20 岁,年长者大 (30-20)/20 = 50%;等年幼者到 30 岁,同样的 10 年差距只剩 33%;到 40 岁只剩 25%。同一个固定差距被一个越来越大的分母除,百分比自然年年缩小。

所以两个人不会"变得"年龄更接近,缩的只是这个比值。需要一个永不改变的数字时,引用年月日的差距,别引用百分比。

别和这几个相邻的计算搞混

年龄差只是日期运算里的一类。如果你要的是别的口径,换对应的工具更省事:

最后提一句常被忽略的细节:换时区会不会差一天?不会。每个生日都按本地零点当作纯日历日解析,只读年月日,不比较 UTC 时间戳。一个在奥克兰、一个在洛杉矶的人输入同样两个生日,得到的差距完全一致。这个"差一天"是随手写日期运算最常见的 bug,把它交给工具,比自己掰手指靠谱。


Made by Toolora · Updated 2026-06-13