年龄计算器
精确计算年龄、生肖和下次生日
年龄计算器
什么是年龄计算器?
年龄计算器会把出生日期转换成更清晰的年龄结果,包括已满多少岁、剩余多少月和天、已生活总天数,以及距离下次生日还有多久。它适合填写报名表、核对入学或活动年龄限制、整理家庭档案、准备生日提醒等场景。年龄并不是简单用当前年份减出生年份,因为生日是否已经过了,会直接影响结果;闰年、2 月 29 日生日和不同月份天数也会带来边界问题。本工具以当前浏览器日期作为计算基准,适合快速核对。涉及正式资格、证件、考试或劳动规则时,仍应以相关机构给出的截止日期和口径为准。
使用方法
使用步骤
- 输入您的出生日期
- 点击「计算年龄」更新结果面板
- 查看您的精确年龄、总天数、下次生日和星座
注意事项
- 请使用与源文件一致的日历系统;结果基于实际经过的完整日期,而非四舍五入的周年数。
- 在法律、学校或保险表格场景下,请确认目标系统是按生日、日历年还是当地行政规则计算年龄。
使用场景
技术原理
整岁年龄的计算采用基于日历的减法,而非简单地除以 365.25 天。算法取 today.year - birth.year,然后判断如果今天的(月,日)早于出生时的(月,日)则减去 1。这符合公历记录的惯例:1990-06-15 出生的人在 2026-06-15 00:00(当地时间)恰好满 36 岁,而不是在 36 x 365.25 天之后。剩余的月数和天数通过从更高单位借位来计算,使用前一个日历月的实际天数(28 到 31 天),这就是为什么简单地对总天数取模会在月份边界附近产生偏差一天的错误。 总天数、周数和小时数由毫秒差值(today.getTime() - birth.getTime())除以 86,400,000 毫秒/天得出。计算器读取设备的本地时间,因此隐式继承了主机的 IANA 时区和当前的夏令时偏移;这对天级年龄来说是可以接受的,但在夏令时切换时可能导致小时数偏移 ±1。JavaScript 的 Date 对象使用 0 索引月份(January = 0),这是手写实现中最常见的 bug 来源,当结果需要不受夏令时影响时应使用 Date.UTC()。 生肖通过 (year - 4) mod 12 对照标准顺序:鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪(公元 4 年 = 鼠年)。严格来说,生肖在农历新年而非 1 月 1 日切换,因此公历 1 月或 2 月初出生的人在传统历法中可能属于上一个生肖。闰日(2 月 29 日)的边界情况没有统一规则:英国普通法和《1953 年出生与死亡登记法》将非闰年的生日视为 3 月 1 日,而美国和澳大利亚的许多司法管辖区使用 2 月 28 日,因此工具显示的倒计时是一个默认值,应对照相关法规进行核实。
- 年份差算法:years = today.year - birth.year - (today.MMDD < birth.MMDD ? 1 : 0),避免了闰年后会漂移的 365.25 天近似值
- 毫秒计算:总天数 = floor((Date.now() - birthMs) / 86_400_000);精度受限于 IEEE 754 双精度浮点数,在距 epoch ±100,000,000 天的完整 Date 范围内约为 ±0.5 毫秒
- 公历闰年规则:能被 4 整除,但不能被 400 整除的世纪年除外(1900 年是平年,2000 年是闰年);平均年长为 365.2425 天,而非 365.25 天
- 2 月 29 日出生:非闰年的法律生日取决于司法管辖区(英国普通法和《1953 年出生与死亡登记法》§4 为 3 月 1 日;美国许多州为 2 月 28 日;新西兰和多个英联邦国家为 3 月 1 日);工具选择一个默认值并同时展示两个候选日期
- 生肖:animal = ZODIAC[(year - 4) mod 12];农历新年在 1 月 21 日至 2 月 21 日之间,因此公历年初出生的人需要查阅农历才能得到完全准确的结果
- 时区:Date.getFullYear/getMonth/getDate 读取主机 IANA 时区,对于在 UTC 午夜附近出生的人可能使显示的年龄偏移一天;当需要避免夏令时影响时使用 Date.UTC 变体
- JavaScript 陷阱:月份从 0 开始(0 = 一月),new Date('YYYY-MM-DD') 按 UTC 解析而 new Date('YYYY/MM/DD') 按本地时间解析,getDay 返回 0 表示星期日
示例
基本年龄计算
输入出生日期 1990-06-15,结果显示:35 岁 11 个月 18 天(截至 2026-06-02)生日倒计时
输入出生日期 1985-12-25,会显示距离下一个生日还有多少天生肖结果
出生年份 2000 显示属龙,出生年份 1996 显示属鼠常见问题
精确年龄是怎么计算的?
从出生日期到今天,本页面会分别给出年、月、日,再换算成总天数、总周数、总小时数、总分钟数和总秒数。"年"只有过完生日(月日相同)后才会加一,与官方文件的算法一致。
为什么显示的年龄比我以为的少一岁?
通常是因为今年的生日还没到。本工具采用法律年龄的算法:你只有过完 30 岁生日才算 30 岁,而不是在你 30 岁那一年的 1 月 1 日就开始算。东亚的虚岁会在出生当年就算 1 岁、每过一次春节再加 1 岁,本工具采用的是国际通用算法。
"今天"按哪个时区算?
按你设备的本地时区。如果你跨时区出行,显示的总秒数可能会跳动几小时;但日和月的统计不受影响,因为是按日历日期比较的。
2 月 29 日出生的人怎么算?
在非闰年,本页面默认把 3 月 1 日当作生日(这与多数司法管辖区的做法一致)。也有地区按 2 月 28 日处理;如果涉及法律事务,请以当地具体规定为准。
下一个生日是什么时候?
"下一个生日"模块会显示日期和距离天数,还会标出星期几方便提前安排。对于 2 月 29 日出生的人,在非闰年除了显示 3 月 1 日外,还会一并标出下一次真正的 2 月 29 日。
会计算星座和生肖吗?
会。西方星座按月份和日期计算。中国生肖按出生当年的农历春节划分,因此 1 月或 2 月出生的人显示的可能是上一年的生肖,这才是正确算法。
我的出生日期会被保存或上传吗?
不会。计算完全在浏览器中进行。刷新页面就会清空输入,不记录任何日志,也不会向外发送数据。