• 1 min read
如何在 JavaScript 中计算年龄(DOB 到年、月、日)
学习在 JavaScript 中根据出生日期计算年龄的实用方法。包括确切的年、月、日、当前日期选项以及时区和闰年等常见陷阱。
如果您需要在 JavaScript 中根据出生日期 (DOB) 计算一个人的年龄,您可以通过几种不同的方式来实现。关键是确定 年龄:
的含义- 年龄(最常见)
- 确切年龄(年、月、日)
- 截至特定日期的年龄(并不总是今天)
1) Calculate age in completed years (simple and correct)
这是标准方法:减去年份并在今年尚未生日的情况下进行调整。
函数ageInYears(dob, asOf = new Date()) {
const 出生 = new Date(dob);
const ref = new Date(asOf);
让年份 = ref.getFullYear() -birth.getFullYear();
const m = ref.getMonth() -birth.getMonth();
if (m < 0 || (m === 0 && ref.getDate()
示例: DOB 2000-02-10 和截至 2026-02-09 给出 25(明天生日)。
2) 计算准确年龄(年、月、日)
如果您想要精确的细分,您可以先计算年,然后计算月,然后在需要时通过“借用”上个月来计算天。
函数exactAge(dob, asOf = new Date()) {
const 出生 = new Date(dob);
const ref = new Date(asOf);
让年份 = ref.getFullYear() -birth.getFullYear();
让月份 = ref.getMonth() -birth.getMonth();
让 days = ref.getDate() -birth.getDate();
// 通过借用上个月来调整天数
如果(天数 < 0){
const prevMonth = new Date(ref.getFullYear(), ref.getMonth(), 0); // 第 0 天 = 上个月的最后一天
天+= prevMonth.getDate();
几个月--;
}
// 通过借用上一年来调整月份
如果(月 < 0){
月 += 12;
年 - ;
}
返回{年、月、日};
}
注意:月份日期的边缘情况(例如 31 日的 DOB)需要仔细测试。如果您需要跨所有区域设置和边缘情况的强大功能,请考虑使用经过充分测试的日期库。
3) 使用“当前”日期来表示过去或未来日期的年龄
许多应用需要特定参考日期的年龄(保险、资格规则、学年截止日期)。上述两个函数都接受 asOf 参数,因此您可以执行以下操作:
ageInYears('1995-06-20', '2030-01-01');
精确年龄('1995-06-20', '2030-01-01');
常见陷阱(以及如何避免)
- 时区:解析
YYYY-MM-DD在不同环境中的行为可能有所不同。如果您只关心日期,请以当地时间构建日期:new Date(year,monthIndex,day). - 闰日生日:决定非闰年(2 月 28 日或 3 月 1 日)2 月 29 日的规则。保持一致。
- 无效输入:验证出生日期是真实日期而不是未来日期。
快速选项:使用在线年龄计算器
如果您只需要答案(或者您想验证您的实现),请使用我们的免费计算器:在线计算年龄.
相关指南
常见问题解答
计算年龄最准确的方法是什么?
在大多数情况下,“完整年份”(整岁年龄)是标准。如果您需要完整的细分,请先计算年份,然后计算月份,然后计算日期,并测试月份长度和闰年等边缘情况。
为什么 JavaScript 有时会给出错误的日期字符串?
因为new Date('YYYY-MM-DD')在某些环境中可以解释为UTC。如果您关心本地日历日期,请解析各个部分并使用 new Date(y, m, d).