如果给出格式为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)) { 年龄——; } 警报(年龄);


当前回答

我对之前的答案做了一些更新。

var calculateAge = function(dob) {
    var days = function(date) {
            return 31*date.getMonth() + date.getDate();
        },
        d = new Date(dob*1000),
        now = new Date();

    return now.getFullYear() - d.getFullYear() - ( measureDays(now) < measureDays(d));
}

我希望这对你有所帮助

其他回答

我有一个漂亮的答案,虽然它不是我的代码。不幸的是,我忘记了原来的帖子。

function calculateAge(y, m, d) {
    var _birth = parseInt("" + y + affixZero(m) + affixZero(d));
    var  today = new Date();
    var _today = parseInt("" + today.getFullYear() + affixZero(today.getMonth() + 1) + affixZero(today.getDate()));
    return parseInt((_today - _birth) / 10000);
}
function affixZero(int) {
    if (int < 10) int = "0" + int;
    return "" + int;
}
var age = calculateAge(1980, 4, 22);
alert(age);

我知道这是一个非常古老的线程,但我想把这个实现放在我写的寻找年龄,我相信这是更准确的。

var getAge = function(year,month,date){
    var today = new Date();
    var dob = new Date();
    dob.setFullYear(year);
    dob.setMonth(month-1);
    dob.setDate(date);
    var timeDiff = today.valueOf() - dob.valueOf();
    var milliInDay = 24*60*60*1000;
    var noOfDays = timeDiff / milliInDay;
    var daysInYear = 365.242;
    return  ( noOfDays / daysInYear ) ;
}

当然,你可以调整它以适应其他获取参数的格式。希望这有助于人们寻找更好的解决方案。

我有点晚了,但我发现这是计算出生日期的最简单的方法。

希望这能有所帮助。

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>

这对我来说是最优雅的方式:

const getAge = (birthDateString) => { const today = new Date(); const birthDate = new Date(birthDateString); const yearsDifference = today.getFullYear() - birthDate.getFullYear(); 如果( 今天。getmonth () < birthDate.getMonth() || . getmonth ( (today.getMonth() === birthDate.getMonth() && today.getDate() < birthDate.getDate())) ) { 返回yearsDifference - 1; } 返回yearsDifference; }; console.log (getAge (' 2018-03-12 '));

看这个例子,你从这里得到完整的年、月、日信息

function getAge(dateString) {
    var today = new Date();
    var birthDate = new Date(dateString);
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    var da = today.getDate() - birthDate.getDate();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
        age--;
    }
    if(m<0){
        m +=12;
    }
    if(da<0){
        da +=30;
    }
    return age+" years "+ Math.abs(m) + "months"+ Math.abs(da) + " days";
}
alert('age: ' + getAge("1987/08/31"));    
[http://jsfiddle.net/tapos00/2g70ue5y/][1]