首页 > 代码库 > 计算一个人的年龄(年月日时分秒),有不对的地方希望大家指出!

计算一个人的年龄(年月日时分秒),有不对的地方希望大家指出!

想想我们可以做一个计时器,记录一下我们走过了多少时光。看了一下网上别人的一些代码,记录年月的都并不科学,甚至很麻烦,自己倒腾了一上午,总算弄出来了一个。

自己觉得还比较科学,暂时没有发现BUG,如果哪里有错,希望大家指出来!

上代码:

<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
function live_time(){
    var live_year,live_month,live_day,live_hour,live_minute,live_sec;
    var birth = new Date();
    birth.setFullYear(1990,6,19);
    birth.setHours(0);
    birth.setMinutes(0);
    birth.setSeconds(0);
    //获取当前时间
    var now = new Date();//alert(now);
    
    var t = new Date(now);
    
    //计算时间
    if(t.setFullYear(birth.getFullYear())>=birth){//满一年正向算,比如生日是1992-7-20,而当前时间是1992-8-20
        live_year = now.getFullYear() - birth.getFullYear();    
        live_month = now.getMonth() - birth.getMonth() ;
        live_day = now.getDate() - birth.getDate();
        live_hour = now.getHours() - birth.getHours();
        live_minute = now.getMinutes() - birth.getMinutes();
        live_sec = now.getSeconds() - birth.getSeconds();
    }else{//未满一年(月日)反向算,比如生日是1992-7-20,而当前时间是1992-6-20
        live_year = now.getFullYear() - birth.getFullYear()-1;
        live_month = 12 - birth.getMonth() + now.getMonth();  
        //生日月份的天数,用下个月1日毫秒减去当月1日毫秒算天数,如果是11也就是12月,用第二年1月1日减
        var month_day;
        if(birth.getMonth()<11) month_day = parseInt((new Date().setFullYear(birth.getFullYear(),birth.getMonth()+1,01)-new Date().setFullYear(birth.getFullYear(),birth.getMonth(),01))/86400000);
        else month_day = parseInt((new Date().setFullYear(birth.getFullYear()+1,0,01)-new Date().setFullYear(birth.getFullYear(),birth.getMonth(),01))/86400000);
        live_day = month_day - birth.getDate() + now.getDate();      
     live_hour = now.getHours() - birth.getHours();
        live_minute = now.getMinutes() - birth.getMinutes();
        live_sec = now.getSeconds() - birth.getSeconds();       
    }
    var s = live_year+"岁,"+live_month+"个月,"+live_day+"天,"+live_hour+"小时,"+live_minute+"分,"+live_sec+"秒.";
    document.getElementById("timer").innerHTML = s;
}

window.onload = setInterval(live_time,1000);
</script>
 
</head>
<body>

   <div id="timer"></div>
 
</body>
</html>

 大家别看了 问题多的很。。。