根据生日计算年龄 returns NaN
Calculate age based on birthdate returns NaN
在我的代码中,我试图获取此人的年龄!问题是它给我的结果是 "NaN"。我哪里错了?
$(document).ready(function() {
var birthDate = new Date(1994, 04, 30);
var mdate = birthDate.toString();
var yearThen = parseInt(mdate.substring(0, 4), 10);
var monthThen = parseInt(mdate.substring(5, 7), 10);
var dayThen = parseInt(mdate.substring(8, 10), 10);
var today = new Date();
var birthday = new Date(yearThen, monthThen - 1, dayThen);
var differenceInMilisecond = today.valueOf() - birthday.valueOf();
var year_age = Math.floor(differenceInMilisecond / 31536000000);
document.getElementById("currentAge").innerHTML = year_age + " Years Old";
});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<title>Age Calculator</title>
</head>
<body>
<h1>
<cenrter>Age Calculator</cenrter>
</h1>
Age:
<div id="currentAge"></div>
<p id="demo"></p>
</body>
</html>
如果您在 mdate, yearThen, monthThen
等的控制台中检查您的值打印,您会看到错误所在。
相反,您可以使用默认方法来获取这些值,如下所示:
var birthDate = new Date(1994, 04, 30);
var yearThen =birthDate.getFullYear();
var monthThen = birthDate.getMonth();
var dayThen = birthDate.getDate();
var today = new Date();
var birthday = new Date(yearThen, monthThen - 1, dayThen);
var differenceInMilisecond = today.valueOf() - birthday.valueOf();
var year_age = Math.floor(differenceInMilisecond / 31536000000);
document.getElementById("currentAge").innerHTML = year_age + " Years Old";
勾选 jsFiddle
你可以用这个计算年龄
var year_age = Math.floor(today -birthDate / 31536000000);
你不需要月、日....
如果您需要月份和日期,请使用 getYear()、getMonth()、getFullYear() 函数
确切的功能应该是这样的。
享受编码。
您的年份和月份为 NaN。原因是子串一开始就不正确。它给出了字符,而您正在将字母转换为整数,这是不可能的。
你的日期是这样的:1994 年 5 月 30 日星期一 00:00:00 GMT+0530(印度标准时间)
$(document).ready(function() {
var birthDate = new Date(1994, 04, 30);
var mdate = birthDate.toString();
var yearThen = parseInt(mdate.substring(10, 15), 10);
var mon = new Date(Date.parse(" May, 1, 2012")).getMonth() + 1;
var monthThen = new Date(Date.parse(mdate.substring(3, 7) + ", 1, 2012")).getMonth() + 1;
var dayThen = parseInt(mdate.substring(8, 10), 10);
var today = new Date();
var birthday = new Date(yearThen, monthThen - 1, dayThen);
var differenceInMilisecond = today.valueOf() - birthday.valueOf();
var year_age = Math.floor(differenceInMilisecond / 31536000000);
document.getElementById("currentAge").innerHTML = year_age + " Years Old";
});
好吧,你不需要得到日、月、年只是日期除以 (365.25 * 24 * 60 * 60 * 1000)
之间的差异
var birthDate = new Date(1994, 04, 30);
var today = new Date();
var year_age = Math.floor((today-birthDate)/ 31536000000);
$("#currentAge").html(year_age + " Years Old")
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<title>Age Calculator</title>
</head>
<body>
<h1>
<cenrter>Age Calculator</cenrter>
</h1>
Age:
<div id="currentAge"></div>
<p id="demo"></p>
</body>
</html>
您应该根据以下代码更改参数值:
var mdate = birthDate;
var yearThen = mdate.getFullYear();
var monthThen = mdate.getMonth();
var dayThen = mdate.getDate();
在我的代码中,我试图获取此人的年龄!问题是它给我的结果是 "NaN"。我哪里错了?
$(document).ready(function() {
var birthDate = new Date(1994, 04, 30);
var mdate = birthDate.toString();
var yearThen = parseInt(mdate.substring(0, 4), 10);
var monthThen = parseInt(mdate.substring(5, 7), 10);
var dayThen = parseInt(mdate.substring(8, 10), 10);
var today = new Date();
var birthday = new Date(yearThen, monthThen - 1, dayThen);
var differenceInMilisecond = today.valueOf() - birthday.valueOf();
var year_age = Math.floor(differenceInMilisecond / 31536000000);
document.getElementById("currentAge").innerHTML = year_age + " Years Old";
});
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<title>Age Calculator</title>
</head>
<body>
<h1>
<cenrter>Age Calculator</cenrter>
</h1>
Age:
<div id="currentAge"></div>
<p id="demo"></p>
</body>
</html>
如果您在 mdate, yearThen, monthThen
等的控制台中检查您的值打印,您会看到错误所在。
相反,您可以使用默认方法来获取这些值,如下所示:
var birthDate = new Date(1994, 04, 30);
var yearThen =birthDate.getFullYear();
var monthThen = birthDate.getMonth();
var dayThen = birthDate.getDate();
var today = new Date();
var birthday = new Date(yearThen, monthThen - 1, dayThen);
var differenceInMilisecond = today.valueOf() - birthday.valueOf();
var year_age = Math.floor(differenceInMilisecond / 31536000000);
document.getElementById("currentAge").innerHTML = year_age + " Years Old";
勾选 jsFiddle
你可以用这个计算年龄
var year_age = Math.floor(today -birthDate / 31536000000);
你不需要月、日.... 如果您需要月份和日期,请使用 getYear()、getMonth()、getFullYear() 函数
确切的功能应该是这样的。 享受编码。 您的年份和月份为 NaN。原因是子串一开始就不正确。它给出了字符,而您正在将字母转换为整数,这是不可能的。
你的日期是这样的:1994 年 5 月 30 日星期一 00:00:00 GMT+0530(印度标准时间)
$(document).ready(function() {
var birthDate = new Date(1994, 04, 30);
var mdate = birthDate.toString();
var yearThen = parseInt(mdate.substring(10, 15), 10);
var mon = new Date(Date.parse(" May, 1, 2012")).getMonth() + 1;
var monthThen = new Date(Date.parse(mdate.substring(3, 7) + ", 1, 2012")).getMonth() + 1;
var dayThen = parseInt(mdate.substring(8, 10), 10);
var today = new Date();
var birthday = new Date(yearThen, monthThen - 1, dayThen);
var differenceInMilisecond = today.valueOf() - birthday.valueOf();
var year_age = Math.floor(differenceInMilisecond / 31536000000);
document.getElementById("currentAge").innerHTML = year_age + " Years Old";
});
好吧,你不需要得到日、月、年只是日期除以 (365.25 * 24 * 60 * 60 * 1000)
var birthDate = new Date(1994, 04, 30);
var today = new Date();
var year_age = Math.floor((today-birthDate)/ 31536000000);
$("#currentAge").html(year_age + " Years Old")
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<title>Age Calculator</title>
</head>
<body>
<h1>
<cenrter>Age Calculator</cenrter>
</h1>
Age:
<div id="currentAge"></div>
<p id="demo"></p>
</body>
</html>
您应该根据以下代码更改参数值:
var mdate = birthDate;
var yearThen = mdate.getFullYear();
var monthThen = mdate.getMonth();
var dayThen = mdate.getDate();