如果给出格式为YYYYMMDD的出生日期,如何以年计算年龄?是否可以使用Date()函数?
我正在寻找一个比我现在使用的更好的解决方案:
Var dob = '19800810';
var年=数字(dob.)substr (0, 4));
var月=数字(dob.)Substr (4, 2)) - 1;
var day =数字(dob.)2) substr(6日);
var today = new Date();
var age = today.getFullYear() -年份;
if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day)) {
年龄——;
}
警报(年龄);
我只是不得不为自己写这个函数-接受的答案是相当好的,但IMO可以使用一些清理。这需要一个unix时间戳的dob,因为这是我的要求,但可以迅速适应使用字符串:
var getAge = function(dob) {
var measureDays = function(dateObj) {
return 31*dateObj.getMonth()+dateObj.getDate();
},
d = new Date(dob*1000),
now = new Date();
return now.getFullYear() - d.getFullYear() - (measureDays(now) < measureDays(d));
}
注意,我在measureDays函数中使用了31的固定值。所有计算所关心的是“年中的一天”是时间戳的单调递增度量。
如果使用javascript时间戳或字符串,显然需要删除1000的因子。
我有点晚了,但我发现这是计算出生日期的最简单的方法。
希望这能有所帮助。
function init() {
writeYears("myage", 0, Age());
}
function Age() {
var birthday = new Date(1997, 02, 01), //Year, month-1 , day.
today = new Date(),
one_year = 1000 * 60 * 60 * 24 * 365;
return Math.floor((today.getTime() - birthday.getTime()) / one_year);
}
function writeYears(id, current, maximum) {
document.getElementById(id).innerHTML = current;
if (current < maximum) {
setTimeout(function() {
writeYears(id, ++current, maximum);
}, Math.sin(current / maximum) * 200);
}
}
init()
<span id="myage"></span>