在我的代码中,我试图了解这个人的年龄!问题是它给我的结果是“ 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>
答案 0 :(得分:0)
如果您要在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
答案 1 :(得分:0)
您可以以此计算年龄
var year_age = Math.floor(today -birthDate / 31536000000);
您不需要月,日...。 如果您需要按月使用getYear(),getMonth(),getFullYear()函数
答案 2 :(得分:0)
这应该是确切的功能。 享受编码。 您的月份和月份是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";
});
答案 3 :(得分:0)
好吧,您不需要获取日,月,年之间的日期差除以(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>
答案 4 :(得分:0)
您应根据以下代码更改参数的值:
var mdate = birthDate;
var yearThen = mdate.getFullYear();
var monthThen = mdate.getMonth();
var dayThen = mdate.getDate();