时间日期 · 时间戳转换

年龄计算器

周岁/虚岁/精确到天小时

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 63 次使用
出生日期 → 周岁 / 虚岁 / 精确到天小时
出生日期birthday
计算基准日as of
周岁按 满岁 逻辑(未到当年生日不 +1);虚岁出生即 1 岁、每过春节 +1。 所有计算均为本地时间,无时区偏移。
请选择出生日期
就绪 · 周岁 = 基准日 − 出生日,年月日借位精确
第一节

关于本工具

About

填生日时卡在“周岁还是虚岁”上,是很多表格填写、合同签署、社保办理前的常见停顿。这个工具同时算出周岁(精确到天和小时)与虚岁,并标注两种算法的差异来源,让年龄不再是个模糊数。所有计算在浏览器本地完成,生日数据不会被上传。

使用场景

退休审批卡周岁

某国企人事科核对老张的退休日期,档案年龄是 1964 年 3 月 10 日,身份证却是 1965 年 6 月 15 日。按政策以档案最先记载为准,但精确到天的周岁计算需要确认 2025 年 3 月 10 日是否满 61 周岁。用本工具输入档案出生时间和当前日期,直接得到精确到天的周岁数值,避免人工掐指算错一个月,导致退休金发放延误。

报名截止日卡年龄

某事业单位招聘要求“35 周岁以下(1989 年 7 月 1 日后出生)”。考生小李生于 1989 年 6 月 28 日,报名截止日期是 2024 年 7 月 5 日。手动算周岁容易混淆“满 35 岁”和“35 周岁以下”的边界。用本工具输入出生日期和截止日期,精确到天的结果直接显示“35 岁 0 个月 7 天”,明确超出限制,避免白跑一趟现场审核。

虚岁算彩礼标准

河南农村习俗,女方家长要求男方按虚岁给彩礼,每虚岁 1000 元。男方生于 1998 年腊月廿三(公历 1999 年 1 月 30 日),按当地算法,过了农历新年就长一岁。2025 年春节后,男方家长和女方家长对虚岁是 27 还是 28 争执不下。用本工具输入农历出生日期和当前农历日期,直接输出虚岁数值,双方当场认可,避免因一岁之差多掏 1000 元。

新生儿医保卡办理

新生儿出生 90 天内参保才能从出生日起享受医保待遇。宝妈小王的孩子 2024 年 12 月 31 日出生,她担心春节假期耽误办理,不确定截止日是 2025 年 3 月 31 日还是 4 月 1 日。用本工具输入出生日期和当前日期,精确到天的结果直接显示“已出生 45 天”,剩余 45 天,她立刻安排节后第一个工作日去社区办理,避免因算错天数错过窗口期。

驾照换证查周岁

C1 驾照 70 周岁后每年需提交身体条件证明。老李 1955 年 2 月 28 日出生,2025 年 3 月 1 日去换证,窗口工作人员说“你刚满 70 岁,今年不用体检”。但老李记得政策是“70 周岁以上”才需每年体检。用本工具输入出生日期和换证日期,精确到天的结果显示“70 岁 0 个月 1 天”,确认自己已满 70 周岁,当场补交体检证明,避免因误解政策被拒换证。

对比矩阵

维度本工具在线年龄计算器手工/公式计算
计算精度精确到天、小时多数精确到年或月依赖个人计算,易出错
虚岁算法内置农历春节判断,自动计算虚岁多数只算周岁,无虚岁选项需查农历日历,手动推算
隐私纯浏览器计算,数据不出本地需上传出生日期到服务器完全离线,无数据外泄
速度即时显示,无网络延迟依赖网络请求,有等待时间需手动查表或心算,耗时
复杂场景支持闰年、跨世纪、跨农历春节部分工具对闰年处理有误需自行核对历法规则
操作门槛输入日期即可,无需额外知识需理解周岁/虚岁概念需掌握年龄计算规则和农历知识
第二节

使用指南

Getting Started

使用步骤

  1. 1在「出生日期」区点选或键入年/月/日,日历控件自动高亮所选日期
  2. 2勾选「虚岁」开关后,结果区同步显示周岁与虚岁两行数值
  3. 3点击「精确到天小时」按钮,结果区展开显示剩余天数、小时及分钟数
  4. 4结果区下方自动生成「已过天数」与「剩余天数」进度条,颜色随年龄区间变化

输入输出示例

输入输出说明
1990-01-15 08:30:00周岁:34岁 8个月 18天 约5小时;虚岁:35岁常规:完整日期时间输入,验证周岁精确到小时、虚岁按农历跨年规则(1990年1月15日属农历腊月十九,虚岁当年+1)
2024-02-29周岁:0岁 5个月 0天;虚岁:1岁边界:闰年2月29日出生,验证非闰年时周岁计算是否自动按2月28日/3月1日处理(本工具按2月28日处理)
2000-01-01 00:00:00周岁:24岁 6个月 1天 0小时;虚岁:25岁边界:千禧年零点,验证时间边界和虚岁跨年逻辑(公历1月1日通常虚岁已+1,但农历可能仍在腊月)
2025-07-01周岁:0岁 0个月 0天;虚岁:1岁边界:当天出生,验证零岁零月零天的显示是否正常,虚岁是否默认+1
1949-10-01周岁:74岁 9个月 1天;虚岁:76岁易错:建国日,验证跨世纪长跨度计算的精度(无时间输入时按0时处理)
2023-12-31 23:59:59周岁:0岁 6个月 2天 23小时59分59秒;虚岁:1岁边界:年末最后一秒,验证跨年边界计算是否准确(次日即2024年1月1日)
1996-02-29周岁:28岁 4个月 3天;虚岁:29岁易错:闰年2月29日出生,2024年2月29日刚过生日,验证非闰年生日是否按2月28日/3月1日处理(本工具按2月28日)

常见错误对照

1.混淆周岁和虚岁的计算规则

✗ 错误输入生日 2000-01-01,认为 2024-12-31 时虚岁是 24
✓ 修复虚岁 = 当前年份 - 出生年份 + 1 = 2024 - 2000 + 1 = 25

虚岁按农历新年加 1,出生即 1 岁,与周岁(过生日才加 1)完全不同。该工具分别显示两种结果,用户常误以为虚岁就是周岁+1。

2.日期格式输错导致解析失败

✗ 错误输入 2024/01/01 或 01-01-2024
✓ 修复输入 2024-01-01 或 20240101

工具默认接受 ISO 8601 格式(YYYY-MM-DD 或 YYYYMMDD),斜杠或非标准顺序会被判为无效输入,需按提示格式重填。

3.将出生日期与当前日期颠倒

✗ 错误出生日期填 2024-01-01,当前日期填 2000-01-01
✓ 修复出生日期填 2000-01-01,当前日期填 2024-01-01

工具按『当前日期 - 出生日期』计算年龄,顺序颠倒会得到负数结果或报错。用户常把两个输入框搞反。

4.忽略闰年 2 月 29 日的边界情况

✗ 错误出生日期 2000-02-29,当前日期 2023-02-28,认为周岁是 22
✓ 修复周岁 = 22(2023 年 2 月 28 日未到 2 月 29 日生日,所以未满 23)

闰日出生者在非闰年生日按 2 月 28 日或 3 月 1 日处理,工具内部有固定逻辑,用户手动计算易多算或少算 1 天。

5.输入未来日期作为出生日期

✗ 错误出生日期填 2025-06-01,当前日期填 2024-01-01
✓ 修复出生日期必须早于或等于当前日期

年龄计算基于时间差,未来出生日期会导致负年龄或工具拒绝计算。部分用户测试时随意输入未来日期。

6.误解『精确到天小时』的输出含义

✗ 错误看到结果『25 岁 3 个月 2 天 5 小时』,认为这是精确到秒的年龄
✓ 修复该结果表示从出生到当前时间的累计天数/小时,不是精确到秒的瞬时值

工具只显示天和小时,不显示分钟/秒,用户误以为结果是精确到秒的年龄,实际是向下取整的近似值。

7.用农历日期代替公历生日输入

✗ 错误出生日期填 2023-01-22(农历正月初一),实际公历生日是 2023-02-10
✓ 修复必须使用身份证或出生证明上的公历日期

工具只处理公历日期,农历日期需先换算。用户习惯用农历生日输入,导致计算结果与实际周岁偏差 1 个月以上。

8.忽略时区对小时计算的影响

✗ 错误出生时间 1990-01-01 08:00(北京时间),当前时间 2024-01-01 07:00(UTC 时间)
✓ 修复出生时间和当前时间使用同一时区(如均用北京时间)

工具默认使用浏览器本地时区,若用户手动输入不同时区的时间,年龄的小时部分会出错。跨时区用户需统一时区。

第三节

工作原理

How It Works

核心公式

周岁 = 当前日期 - 出生日期(精确到天小时)

变量说明

  • 当前日期计算时的年-月-日 时:分
  • 出生日期用户输入的出生年-月-日 时:分
  • 周岁已完整度过的整年数,含小数天

示例

出生日期 1990-03-15 14:30,当前日期 2025-03-15 10:00:先算天数差 = (2025-03-15 10:00) - (1990-03-15 14:30) = 12784天 - 4.5小时 = 12783.8125天;除以365.2425 ≈ 35.00周岁。因当前时间未到出生时刻,周岁为34岁,精确到天小时显示为34岁364天19.5小时。

输入出生日期(年月日时分秒)获取当前时间(浏览器本地)计算差值(年/月/日/时/分/秒)周岁(精确)判断是否过生日(年/月/日比较)虚岁(传统)计算总天数(精确到天)计算总小时(精确到小时)总天数/ 总小时所有计算均在浏览器本地完成,数据不上传服务器支持任意时区,结果实时更新
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

5 种主流语言实现,复制即用:

from datetime import datetime, date def age_precise(birth: date, ref: datetime) -> dict: """返回周岁(年)、虚岁、精确到天和小时""" if ref.date() < birth: return {"error": "出生日期不能晚于参考日期"} # 周岁:完整经过的整年数 years = ref.year - birth.year if (ref.month, ref.day) < (birth.month, birth.day): years -= 1 # 虚岁:出生算1岁,每过一个春节加1岁(简化:按公历1月1日) xusui = ref.year - birth.year + 1 # 精确天数 delta = ref.date() - birth days = delta.days hours = days * 24 + ref.hour return {"周岁": years, "虚岁": xusui, "天数": days, "小时数": hours} # 示例:2000年3月15日出生,参考时间2025年4月1日14:30 print(age_precise(date(2000, 3, 15), datetime(2025, 4, 1, 14, 30)))
function agePrecise(birthStr, refDate) { const birth = new Date(birthStr); const ref = refDate ? new Date(refDate) : new Date(); if (ref < birth) return { error: '出生日期不能晚于参考日期' }; // 周岁 let years = ref.getFullYear() - birth.getFullYear(); const mDiff = ref.getMonth() - birth.getMonth(); if (mDiff < 0 || (mDiff === 0 && ref.getDate() < birth.getDate())) years--; // 虚岁(简化:按公历年份差+1) const xusui = ref.getFullYear() - birth.getFullYear() + 1; // 精确天数 const msDay = 24 * 60 * 60 * 1000; const days = Math.floor((ref - birth) / msDay); const hours = Math.floor((ref - birth) / (60 * 60 * 1000)); return { 周岁: years, 虚岁: xusui, 天数: days, 小时数: hours }; } console.log(agePrecise('2000-03-15', '2025-04-01T14:30:00'));
package main import ( "fmt" "time" ) func agePrecise(birth, ref time.Time) map[string]int { if ref.Before(birth) { return map[string]int{"error": -1} // 简化错误处理 } // 周岁 years := ref.Year() - birth.Year() if ref.YearDay() < birth.YearDay() { years-- } // 虚岁 xusui := ref.Year() - birth.Year() + 1 // 精确天数 days := int(ref.Sub(birth).Hours() / 24) hours := int(ref.Sub(birth).Hours()) return map[string]int{"周岁": years, "虚岁": xusui, "天数": days, "小时数": hours} } func main() { birth := time.Date(2000, 3, 15, 0, 0, 0, 0, time.UTC) ref := time.Date(2025, 4, 1, 14, 30, 0, 0, time.UTC) fmt.Println(agePrecise(birth, ref)) }
interface AgeResult { 周岁: number; 虚岁: number; 天数: number; 小时数: number; error?: string; } function agePrecise(birth: string, ref?: string): AgeResult { const b = new Date(birth); const r = ref ? new Date(ref) : new Date(); if (r < b) return { 周岁: 0, 虚岁: 0, 天数: 0, 小时数: 0, error: '出生日期不能晚于参考日期' }; let years = r.getFullYear() - b.getFullYear(); if (r.getMonth() < b.getMonth() || (r.getMonth() === b.getMonth() && r.getDate() < b.getDate())) years--; const xusui = r.getFullYear() - b.getFullYear() + 1; const ms = r.getTime() - b.getTime(); const days = Math.floor(ms / (1000 * 60 * 60 * 24)); const hours = Math.floor(ms / (1000 * 60 * 60)); return { 周岁: years, 虚岁: xusui, 天数: days, 小时数: hours }; } console.log(agePrecise('2000-03-15', '2025-04-01T14:30:00'));
use chrono::{NaiveDate, NaiveDateTime, Duration}; fn age_precise(birth: NaiveDate, ref_dt: NaiveDateTime) -> (i32, i32, i64, i64) { let ref_date = ref_dt.date(); // 周岁 let mut years = ref_date.year() - birth.year(); if ref_date.ordinal() < birth.ordinal() { years -= 1; } // 虚岁 let xusui = ref_date.year() - birth.year() + 1; // 精确天数 let duration: Duration = ref_dt - birth.and_hms_opt(0, 0, 0).unwrap(); let days = duration.num_days(); let hours = duration.num_hours(); (years, xusui, days, hours) } fn main() { let birth = NaiveDate::from_ymd_opt(2000, 3, 15).unwrap(); let ref_dt = NaiveDate::from_ymd_opt(2025, 4, 1).unwrap().and_hms_opt(14, 30, 0).unwrap(); let (z, x, d, h) = age_precise(birth, ref_dt); println!("周岁:{} 虚岁:{} 天数:{} 小时数:{}", z, x, d, h); }
第五节

常见问题

Q & A
我生日是1990年2月29日,为什么算周岁会报错?

1990年不是闰年,2月29日不存在。本工具按公历严格校验日期合法性,输入2月29日但年份不是闰年时会提示非法日期。正确的做法:如果您的出生证/身份证上确实是1990年2月29日(早年人工登记笔误常见),请先核实真实出生日期后再输入;若只是记错,可改填2月28日或3月1日——多数地区法律上以3月1日作为2月29日出生的生日。

为什么我填了2000年1月1日,算出来周岁是23,但别人说虚岁是25?

周岁和虚岁的算法差异导致。周岁=当前日期-出生日期,精确到天;虚岁传统算法是「出生即1岁,每过一个春节加1岁」。2000年1月1日出生,到2024年1月1日周岁满24,但虚岁在2024年春节前是24(出生1岁+过24个春节),春节后是25。本工具虚岁采用「春节分界」主流算法,您看到的25可能是对方按「农历新年」而非公历1月1日计算的结果。

我输入了今天日期,为什么结果里小时一栏是0?

本工具年龄精确到天小时,默认按出生日期0时0分、当前日期0时0分计算整日差。如果您需要包含具体时刻,请点击结果区下方的「精确时刻」开关,会弹出两个时间输入框:出生时刻和当前时刻。填上具体时间(如出生14:30、当前10:15),小时数才会正确显示。注意:不打开开关时,小时固定为0,表示只按日期差算。

这个工具算的周岁和银行/医院算的一样准吗?

算法一致:周岁=当前日期-出生日期,向下取整。银行、医院、保险公司都遵循公历日期差规则,本工具计算结果与它们完全一致。但注意两点:1)部分银行在贷款年龄计算中可能按「对月对日」而非「满整年」处理(如2024年1月15日出生,2025年1月14日算0岁),本工具采用更通用的「整年」规则;2)医院儿科有时按「矫正胎龄」计算,与本工具不同。

我输入的是农历生日,能直接算吗?

本工具只接受公历(阳历)日期输入。如果您只有农历生日,请先通过手机日历或在线农历转换工具将农历日期转为公历日期后再输入。常见误区:农历八月十五每年对应的公历日期不同(约在9月-10月浮动),不能直接填公历8月15日。如果您需要频繁换算农历生日,建议先在工具页面上方找到「农历转公历」链接,转换后再使用本年龄计算器。

为什么我换了台电脑,算出来的结果不一样?

本工具是纯前端实现(FE),所有计算在您的浏览器里完成,不依赖服务器。换电脑结果不同,大概率是两台电脑的系统时间设置不一致——比如一台设的北京时间,另一台设的纽约时间。请在输入日期前确认当前日期栏显示的是您期望的参考时间。如果当前日期栏自动取的是电脑本地时间,手动改成您需要的基准日期即可统一。

能算100岁以上老人的年龄吗?有没有上限?

可以,没有上限。本工具日期校验范围覆盖公历年份1-9999年,输入1900年1月1日出生、当前日期2024年1月1日,正确输出124周岁。唯一限制:出生日期不能晚于当前日期(未来出生不允许)。如果您输入的是一位120岁老人的生日,注意确认出生年份是否正确——常见错误是只输入后两位(如输入23代表2023年而非1923年),本工具要求四位完整年份。

我填了正确日期但结果一直转圈,是不是坏了?

本工具纯前端计算,不需要网络请求,转圈通常不是服务器问题。请检查:1)浏览器是否禁用了JavaScript(本工具依赖JS执行);2)是否使用了过旧浏览器(IE11及以下不支持);3)输入框中是否混入了空格或全角数字(如123)。解决方案:刷新页面,用半角数字重新输入;若仍转圈,尝试清除浏览器缓存或换Chrome/Edge最新版。无需等待网络恢复。

我算出来周岁和虚岁一样,是不是工具出bug了?

不是bug。周岁和虚岁相同的情况确实存在:如果当前日期正好是某人出生日期当天(即生日当天),且此人已过当年春节,则周岁=当前年份-出生年份,虚岁也=当前年份-出生年份+1-1(因为生日当天虚岁不加)。更常见的是1月1日出生的人:周岁和虚岁在春节前相差1岁,春节后相差2岁,但若生日当天正好是春节,则可能相等。您可点击结果区「查看详细」展开计算过程,会列出周岁和虚岁的每一步公式。

这个工具算出来的年龄能用于法律文件吗?

本工具仅供日常参考,不保证法律效力。周岁计算采用标准公历日期差算法,与《民法典》年龄计算规则一致(满18周岁按生日次日0时起算),但法律场景需要精确到时刻(如合同签署时间),本工具默认按0时计算。如果需要用于法律文件,建议:1)打开「精确时刻」开关,填入具体签约时间;2)与官方机构(派出所、民政局)的年龄计算方式交叉核对;3)保留截图备查,但最终以官方系统数据为准。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭