<!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计算出具体的出生年月日小时分钟秒
该博客提供了一段JavaScript代码,用于计算从出生日期到现在的时间差,包括精确到秒的年龄和时间。通过`getGrowAge`和`getGrowTime`两个函数,分别输出周岁、月、天、时、分、秒的详细信息,并考虑了闰年的判断。此外,还包含了获取当前月份天数的辅助函数`getDaysOfMonth`。

364

被折叠的 条评论
为什么被折叠?



