【发布时间】:2011-05-02 21:07:08
【问题描述】:
如果出生日期格式为 YYYYMMDD,我如何计算年龄?是否可以使用Date() 函数?
我正在寻找比我现在使用的更好的解决方案:
var dob = '19800810';
var year = Number(dob.substr(0, 4));
var month = Number(dob.substr(4, 2)) - 1;
var day = Number(dob.substr(6, 2));
var today = new Date();
var age = today.getFullYear() - year;
if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day)) {
age--;
}
alert(age);
【问题讨论】:
-
请注意您的格式,不要按照您的方式进行;只需使用代码 (010101) 按钮或 Ctrl-K 将代码缩进 4 个空格。
-
我做了,但它无法在 IE9 Beta 上运行,所以我不得不手动完成。
-
您的原始解决方案在计算年龄方面比当前答案更好。 Júlio Santos 的回答基本上是一样的。其他答案在许多情况下给出的结果不准确,并且可能不太直接或效率较低。
-
谢谢布洛克。我希望有一种比看起来有点粗糙的更优雅的方法。
-
@Francisc,这很粗糙,但如果
Date对象封装它,它就必须这样做。人们可以写一些关于 JS 的Date处理的糟糕之处的书。 ...如果您可以忍受有时休息一天,那么近似值:AgeInYears = Math.floor ( (now_Date - DOB_Date) / 31556952000 )就很简单了。
标签: javascript date