2014-11-24 272 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