输入出生日期计算出年龄具体到天

该博客提供了一段JavaScript代码,用于计算从出生日期到现在的时间差,包括精确到秒的年龄和时间。通过`getGrowAge`和`getGrowTime`两个函数,分别输出周岁、月、天、时、分、秒的详细信息,并考虑了闰年的判断。此外,还包含了获取当前月份天数的辅助函数`getDaysOfMonth`。
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script language="javascript">
      //获取出生年龄,周岁、月、天、时、分、秒
      let birthday = '1997-10-21';
      console.log(getGrowAge(birthday));
      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 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) +
          '天 ';
        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;
      }

      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;
      }
    </script>
  </body>
</html>

如果需要具体到秒,可参考这篇文章 js计算出具体的出生年月日小时分钟秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值