原生JS计算年龄(精确到天,时,分,秒)

function getGrowTime(birthday)
{
    var currentTime = Date.parse(new Date());
    var myTime = new Date(birthday);
    var myTimeStamp = Date.parse(myTime);
    var gapSec = (currentTime - myTimeStamp)/1000;
    var day = 0;
    var hour = 0;
    var min = 0;
    var sec = 0;
    if(gapSec/(60*60*24) > 0)
    {
        day = (gapSec-gapSec%(60*60*24))/(60*60*24);
        gapSec = gapSec%(60*60*24);
        if((gapSec/3600) > 0)
        {
            hour = (gapSec-gapSec%3600)/3600;
            gapSec = gapSec%3600;
            if((gapSec/60) > 0)
            {
                min = (gapSec-gapSec%60)/60;
                sec = gapSec%60;
            } else
            {
                sec = gapSec;
            }
        } else
        {
            if((gapSec/60) > 0)
            {
                min = (gapSec-gapSec%60)/60;
                sec = gapSec%60;
            } else
            {
                sec = gapSec;
            }
        }
    } else
    {
        if((gapSec/3600) > 0)
        {
            hour = (gapSec-gapSec%3600)/3600;
            gapSec = gapSec%3600;
            if((gapSec/60) > 0)
            {
                min = (gapSec-gapSec%60)/60;
                sec = gapSec%60;
            } else
            {
                sec = gapSec;
            }
        } else
        {
            if((gapSec/60) > 0)
            {
                min = (gapSec-gapSec%60)/60;
                sec = gapSec%60;
            } else
            {
                sec = gapSec;
            }
        }
    }
    var dateStr = (day<10? ("0"+day): day)+"天 " + 
                  (hour<10? ("0"+hour): hour)+"时 " + 
                  (min<10? ("0"+min): min)+"分 " + 
                  (sec<10? ("0"+sec): sec)+"秒";
    return dateStr;
}
//获取出生年龄,周岁、月、天、时、分、秒
function getGrowAge(birthday)
{
    var now = new Date();
    var year = now.getFullYear();
    var month = now.getMonth() + 1;
    var day = now.getDate();
    var hour = now.getHours();
    var minute = now.getMinutes();
    var second = now.getSeconds();
     
    var myDate = new Date(birthday);
    var myYear = myDate.getFullYear();
    var myMonth = myDate.getMonth() + 1;
    var myDay = myDate.getDate();
    var myHour = myDate.getHours();
    var myMinute = myDate.getMinutes();
    var mySecond = myDate.getSeconds();
     
    var gapSecond = second - mySecond;
    if(gapSecond < 0)
    {
        minute -= 1;
        gapSecond = 60 - mySecond + second;
    }
    var gapMinute = minute - myMinute;
    if(gapMinute < 0)
    {
        hour -= 1;
        gapMinute = 60 - myMinute + minute;
    }
    var gapHour = hour - myHour;
    if(gapHour < 0)
    {
        day -= 1;
        gapHour = 24 - myHour + hour;
    }
    var gapDay = day - myDay;
    if(gapDay < 0)
    {
        month -= 1;
        gapDay = getDaysOfMonth(birthday) - myDay + day;
    }
    var gapMonth = month - myMonth;
    if(gapMonth < 0)
    {
        year -= 1;
        gapMonth = 12 - myMonth + month;
    }
    var gapYear = year - myYear;
    if(gapYear < 0)
    {
        gapYear = 0;
    }
     
    var dateStr = gapYear+"岁 " + 
                  (gapMonth<10? ("0"+gapMonth): gapMonth)+"月 " + 
                  (gapDay<10? ("0"+gapDay): gapDay)+"天 " + 
                  (gapHour<10? ("0"+gapHour): gapHour)+"时 " + 
                  (gapMinute<10? ("0"+gapMinute): gapMinute)+"分 " + 
                  (gapSecond<10? ("0"+gapSecond): gapSecond)+"秒";
    return dateStr;
}
//获取当月的天数
function getDaysOfMonth(dateStr)
{   
    var date = new Date(dateStr);
    var year = date.getFullYear();
    var mouth = date.getMonth() + 1;
    var day = 0;
 
    if(mouth == 2)
    {
        day= isLeapYear(year) ? 29 : 28;
    } else if(mouth == 1 || mouth == 3 || mouth == 5 || 
              mouth == 7 || mouth == 8 || mouth == 10 || mouth == 12)
    {
        day= 31;
    } else
    {
        day= 30;
    }
    return day;
}
 
//判断是否为闰年
function isLeapYear(year)
{
    return (year%4==0 && year%100!=0)||(year%400==0);
}

参考地址:https://mangocool.com/1442561695415.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值