从 jquery datepicker 选择日期计算年龄(以年为单位)

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17921211/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 20:12:44  来源:igfitidea点击:

Calculate age in years on date select from jquery datepicker

jquerydatepickerdate-of-birth

提问by Pachai

I would like to calculate the age of the user as soon as he selects a date from jquery datepicker.

我想在用户从 jquery datepicker 中选择一个日期后立即计算他的年龄。

$(document).ready(function() {
  $( "#nominee_one_dob" ).datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: 'yy-mm-dd',

    onSelect: function (date) {
        var dob = Date.parse(date);
        if (dob.addYears(18) < Date.today())
        {
            alert("Under 18");
        }
        else
        {
            alert(" Over 18");
        }
    }

  });

I am able to get the date selected when i alert(date)but I am not getting anything from the further code.

我能够获得选择的日期,alert(date)但我没有从进一步的代码中获得任何信息。

Please help.

请帮忙。

回答by Praveen

Bugs in your code:

代码中的错误:

(1)

(1)

var dob = Date.parse(date);  //return in milliseconds 

therefore you can't extract year using dob.getFullYear()

因此你不能使用提取年份 dob.getFullYear()

(2)

(2)

Date.today()  //Nope. not available

no method available.

没有可用的方法。

Fixes:

修复:

(1) var dob = new Date(date);

(1) var dob = new Date(date);

no need to parse, datepicker returns the date not string.

无需解析,datepicker 返回日期而不是字符串。

(2) var today = new Date(); //returns current dateTime

(2) var today = new Date(); //returns current dateTime

(3) use .getFullYear()to extract year from Date.

(3) 用于.getFullYear()从日期中提取年份。

Remaining code:

剩余代码:

$(document).ready(function() {
  $( "#nominee_one_dob" ).datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: 'yy-mm-dd',

    onSelect: function (date) {
         var dob = new Date(date);
         var today = new Date();

        if (dob.getFullYear() + 18 < today.getFullYear())
        {
            alert("Under 18");
        }
        else
        {
            alert(" Over 18");
        }
    }

  });
});

Working JSFiddle

工作JSFiddle

回答by Pachai

$("#date_born").datepicker({
  onSelect: calculate,
  dateFormat: 'dd/mm/yy',
  maxDate: '+0d',     
  yearRange: '1914:2014',
  buttonImageOnly: false,
  changeMonth: true,
  changeYear: true
});

$("#date_Today").datepicker({
  onSelect: calculate,
  dateFormat: 'dd/mm/yy',
  maxDate: '+0d',     
  yearRange: '1914:2014',
  buttonImageOnly: true,
  changeMonth: true,
  changeYear: true
});

function calculate() {
  var start = $('#date_born').datepicker('getDate');
  var end       = new Date($('#date_Today').datepicker('getDate'));
  var age_year  = Math.floor((end - start)/31536000000);
  var age_month = Math.floor(((end - start)% 31536000000)/2628000000);
  var age_day   = Math.floor((((end - start)% 31536000000) % 2628000000)/86400000);
  $('#age').val(age_year);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Date <input type="text" name="date_born" id="date_born"/> 
Date Select<input type="text" name="date_Today" id="date_Today"/> 
Age <input type="text" name="age"  id="age" />