Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据月至生日计算年龄_Javascript_Jquery - Fatal编程技术网

Javascript 根据月至生日计算年龄

Javascript 根据月至生日计算年龄,javascript,jquery,Javascript,Jquery,我根据用户的出生日期计算其年龄。它工作正常。但我希望在离他/她的生日还有6个月时,年龄应该向上取整 我用,提供面具日期 HTML <div class="container"> <header> <h3>Calculate Age from Date of Birth</h3> </header> <div class="form-group"> <i

我根据用户的出生日期计算其年龄。它工作正常。但我希望在离他/她的生日还有6个月时,年龄应该向上取整

我用,提供面具日期

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模糊处理程序中,将
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');