Javascript 根据月至生日计算年龄
我根据用户的出生日期计算其年龄。它工作正常。但我希望在离他/她的生日还有6个月时,年龄应该向上取整 我用,提供面具日期 HTMLJavascript 根据月至生日计算年龄,javascript,jquery,Javascript,Jquery,我根据用户的出生日期计算其年龄。它工作正常。但我希望在离他/她的生日还有6个月时,年龄应该向上取整 我用,提供面具日期 HTML <div class="container"> <header> <h3>Calculate Age from Date of Birth</h3> </header> <div class="form-group"> <i
<div class="container">
<header>
<h3>Calculate Age from Date of Birth</h3>
</header>
<div class="form-group">
<input type="text" class="form-control mask-date" id="dob" placeholder="Date of Birth">
</div>
<div class="form-group">
<input type="number" class="form-control" id="age" placeholder="Age">
</div>
</div>
在JavaScript模糊处理程序中,将
Math.floor
替换为:
不,每年都有相同的天数。因此,在年与年之间进行减法并根据月与日进行修正更为容易
var d1 = new Date(); // current day
var d2 = new Date(1999, 5, 16); // born day
var age = d1.getFullYear() - d2.getFullYear();
if (d1.getMonth()<d2.getMonth() || d1.getMonth() == d2.getMonth() && d1.getDay() < d2.getDay())
{
age = age - 1;
}
// here is actual age in "age"
var d1=新日期();//今日
var d2=新日期(1999年5月16日);//出生日
var age=d1.getFullYear()-d2.getFullYear();
如果(D1.GETMUNTHORE)你应该强烈地考虑使用库。它是一个非常强大的JavaScript日期/时间操作库,在行业中被广泛使用。文档是全面的,我相信你会发现很多其他的日期函数是有用的。
下载它并在JavaScript之前添加脚本源代码
新的Javascript
$('.mask-date').mask("99/99/9999",{placeholder:"mm/dd/yyyy"});
$('#dob').blur(function(event) {
var dob = $('#dob').val();
dob = new Date(dob);
var today = new Date();
var age = Math.floor((today-dob)/ (365.25 * 24 * 60 * 60 * 1000));
console.log(age);
});
$('#dob').blur(function(event) {
// convert date into moment date object (specifying the format)
var dob = moment($('#dob').val(), 'MM/DD/YYYY');
// you can format the date easily
console.log(dob.format('DD/MMM/YYYY'); // 01/Jan/2001
// you can output the date from now which rounds the year as you want
console.log(dob.fromNow());
});
输出
今日日期:2017年1月25日(2017年1月25日)
利用瞬间很容易
let years = moment().diff(birthdate, 'years');
let months = moment().diff(birthdate, 'months');
let days = moment().diff(birthdate, 'days');
希望此帮助Math.round()不起作用吗?@JamesT,问题不在于计算年龄,而是在距离此人生日还有6个月的情况下进行四舍五入。是的,使用Math.round来进行四舍五入,而不是Math.floor..参见GOTO 0的答案Math.round()仍然会产生相同的结果!年龄计算对我来说很有效,但如果离这个人的生日还有6个月,我想把年龄四舍五入。现在,当我使用数学时。round()它产生相同的结果。Math.Tyn将是圆形的。5或更高,而不是向下。如果你没有得到正确的结果,你就不能正确计算6个月的边界。8Y6M应该等于8.5=9。@ UnthaMad <代码>数学>应该为你的目的而工作。如果它不做你想要的,考虑添加一些出生DA的例子。还有你对你的问题的期望年龄。@GOTO0,Lol,:-D我觉得我的大脑有点热,所以我想不出来。谢谢!
dob = '10/01/2017' // in 8 months
dob = '01/20/2016' // a year ago
dob = '08/20/2015' // a year ago
dob = '07/20/2015' // 2 years ago (rounding by 6 months as you expect)
let years = moment().diff(birthdate, 'years');
let months = moment().diff(birthdate, 'months');
let days = moment().diff(birthdate, 'days');