我根据他的出生日期计算用户的年龄。它工作正常。但我希望当它<生日<6个月时,年龄应该四舍五入。
我使用jquery input mask plugin来提供掩码日期。
HTML
<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
$('.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);
});
答案 0 :(得分:2)
在JavaScript模糊处理程序中,将Math.floor
替换为Math.round
:
var age = Math.round((today-dob)/ (365.25 * 24 * 60 * 60 * 1000));
答案 1 :(得分:2)
您应该强烈考虑使用moment.js库。它是一个非常强大的JavaScript日期/时间操作库,在业界广泛使用。文档是全面的,我相信你会发现很多其他日期函数都很有用。
下载并在JavaScript之前添加脚本源。
新Javascript
$('#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日(01/25/2017)
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)
答案 2 :(得分:1)
轻松利用瞬间
let years = moment().diff(birthdate, 'years');
let years = moment().diff(birthdate, 'months');
let days = moment().diff(birthdate, 'days');
希望获得帮助
答案 3 :(得分:0)
每年都没有相同的天数。因此,在年份之间制作减法更容易,并根据月和日进行修正
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"