将生日转换为年龄Jquery

时间:2016-01-07 20:36:42

标签: jquery

我有这段代码:

$('.date span').each(function(){
		var date_search =  $(this).text();

		var birthdate_search = new Date(date_search);
		var cur_search = new Date();
		var diff_search = cur-birthdate_search;
		var age_search = Math.floor(diff/31536000000);

		$(this).text(age_search+" years old");

	});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="date">
  <span>05/08/1993</span>
 </div>
<div class="date">
  <span>05/08/1996</span>
 </div>

我正在尝试将每个<div>中的生日转换为实际年龄(生日日期为1993 - &gt; 22 years old),但它不起作用。

2 个答案:

答案 0 :(得分:2)

您使用了curdiff,并且您打算使用cur_searchdiff_search

var birthdate_search = new Date(date_search);
var cur_search = new Date();
var diff_search = cur_search - birthdate_search;        // <- here
var age_search = Math.floor(diff_search / 31536000000); // <- here

答案 1 :(得分:2)

这是一个明确简单易行的年龄方法。使用基本数学,速度超快。此外,该方法本身只需要一个基本的日期字符串,就像您使用Date对象一样。因此,它几乎可以与任何datepicker类型的插件一起使用。

function getAge(bdate) {
  return ~~((new Date() - new Date(bdate)) / (60*60*24*365.2425*1000))
}

通过以下stringstream查看易用性!

function getAge(bdate) { return ~~((new Date()-new Date(bdate))/(31556952000)) }
$("#inpBirthDate").datepicker({
  changeMonth: true,
  changeYear: true,
  defaultDate: '7/5/1980',
  yearRange: '1950:2010'
})
.on('change', function(e) {
  $('#inpAge').val(getAge($(this).val()));
});
#inpAge {
  background-color: transparent;
  border: none;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

<label for="inpBirthDate">Birth Date</label>
<input type="text" id="inpBirthDate">
<hr />
<label for="inpAge">Age</label>
<input type="text" id="inpAge" readonly>