计算几个月到生日javascript的年龄基数

时间:2017-01-25 10:04:16

标签: javascript jquery

我根据他的出生日期计算用户的年龄。它工作正常。但我希望当它<生日<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); 
    });

4 个答案:

答案 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"