Datepicker计算年龄

时间:2014-11-24 07:41:41

标签: jquery datepicker

我有一个计算年龄的代码但似乎错了,因为我觉得1950年的基础。

 现在我想计算当前时间中的年龄和datepicker上的选定日期。

示例:现在日期 11/24/14 如果我选择了datepicker 11/24/13 ,则输出 1 。请帮助我。

HTML

<div class="checked" id="age"></div>
<input id="dob" />

JQUERY

  $('#dob').datepicker({
  onSelect: function(value, ui) {
    console.log(ui.selectedYear)
    var today = new Date(), 
        dob = new Date(value), 
        age = ui.selectedYear - 1950;

    $('#age').text(age);
},
maxDate: '+0d',
changeMonth: true,
changeYear: true,
defaultDate: '-18yr',
});

这是工作代码:http://jsfiddle.net/GCu2D/441/

3 个答案:

答案 0 :(得分:1)

要计算年龄,您需要使用getFullYear()获取当前年份:

age = today.getFullYear() - ui.selectedYear;

<强>

&#13;
&#13;
$('#dob').datepicker({
    onSelect: function(value, ui) {
        var today = new Date(), 
            age = today.getFullYear() - ui.selectedYear;
        $('#age').text(age);
    },
    maxDate: '+0d',
    changeMonth: true,
    changeYear: true,
    defaultDate: '-18yr',
});
&#13;
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<input id="dob" />
<div class="checked" id="age"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您需要从所选日期中减去当前年份。

$('#dob').datepicker({
    onSelect: function(value, ui) {
        var today = new Date().getTime(), 
            dob = new Date(value).getTime();
            age = today - dob;
            yoa = Math.floor(age / 1000 / 60 / 60 / 24 / 365.25); // age / ms / sec / min / hour / days in a year
        if(yoa < 18){
            under18();
        }else{
            overOrEqual18();
        }
    },
    maxDate: '+0d',
    changeMonth: true,
    changeYear: true,
    defaultDate: '-18yr',
});

function overOrEqual18(){
    $('#age').text('you are old enough');
}
function under18(){
    $('#age').text('you are NOT old enough');
}

我建议您将所选日期转换为时间戳,以便您可以更准确地计算他们的年龄,而不是仅仅使用他们选择的年份(这意味着它可以适应日期/月份和年份)

我添加了一些功能,可让您根据输入是否超过18岁来执行操作。

<强> DEMO

编辑: 根据你对另一个答案的评论。如果您将maxDate: '+0d'更改为maxDate: '-18yr',则会禁用今天之前不到18年的日期选择

<强> DEMO

答案 2 :(得分:0)

function comp(){
       var bday=document.getElementById('bday').value;

        var today = new Date();
        var birthDate = new Date(bday);
        var age = today.getFullYear() - birthDate.getFullYear();
        var m = today.getMonth() - birthDate.getMonth();

        if (today.getMonth() < birthDate.getMonth() || (today.getMonth() == birthDate.getMonth() && today.getDate() < birthDate.getDate())) {
            age--;

        }

        document.getElementById('age').value=age;
    }