2014-11-24 132 views
0

我有一个计算年龄的代码,但由于基数,我认为1950年日期选择单位计算年龄

现在我想计算的日期选择在 当前时间年龄和所选的日期似乎是错误的。

实施例:日期现在是14年11月24日和,如果我在日期选择器挑是13年11月24日输出是。请帮帮我。

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/

回答

0

要计算时代,你需要使用getFullYear()获得本年度:

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

片段

$('#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', 
 
});
<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>

+0

非常感谢你先生abhitalks。有用。可以提问?我如何根据当前时间禁用一年。例如:现在是2014年减去18年。所以过去的几年将被禁用。 1997年 - 当前日期。 – 2014-11-24 08:15:21

+0

'minDate':http://jqueryui.com/datepicker/#min-max – Abhitalks 2014-11-24 08:23:02

+0

非常感谢你先生abhitalks。大喜欢你的帮助 – 2014-11-24 08:27:23

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

+0

谢谢sir haxxxton。对于迟到的回复非常有帮助 – 2014-11-25 15:52:27

+0

@kentyo非常欢迎,如果解决方案有帮助,请不要忘记标记答案为正确。通过这种方式,这个问题的访问者将能够找到对你有用的东西:) – haxxxton 2014-11-25 23:31:36

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; 
    } 
+0

请给你的代码添加一些描述。它有助于人们了解你添加的内容 – JSantos 2017-09-01 13:10:25