使用JQuery从出生日期开始的年龄

我需要使用JQuery来计算某人是否从出生之日起超过18岁。

var curr = new Date(); curr.setFullYear(curr.getFullYear() - 18); var dob = Date.parse($(this).text()); if((curr-dob)<0) { $(this).text("Under 18"); } else { $(this).text(" Over 18"); } 

必须有一些更简单的函数来比较日期,而不是使用setFullYear和getFullYear方法。

注意:我想找到一个新方法的实际原因是代码的长度。 我必须将此代码放入一个限制为250个字符的数据库字段中。 更改数据库不是快速或轻松发生的事情。

您可能会发现开源Datejs库很有帮助。 具体来说就是addYears函数。

 var dob = Date.parse($(this).text()); if (dob.addYears(18) < Date.today()) { $(this).text("Under 18"); } else { $(this).text(" Over 18"); } 

以更简洁的方式:

 $(this).text( Date.parse($(this).text()).addYears(18) < Date.today() ? "Under 18" : " Over 18" ) 
 Date.prototype.age=function(at){ var value = new Date(this.getTime()); var age = at.getFullYear() - value.getFullYear(); value = value.setFullYear(at.getFullYear()); if (at < value) --age; return age; }; var dob = new Date(Date.parse($(this).text())); if(dob.age(new Date()) < 18) { $(this).text("Under 18"); } else { $(this).text(" Over 18"); } 

您可以删除DOB的单独变量并折叠if语句。 以下代码为165个字符:

 var check = new Date(); check.setFullYear(check.getFullYear() - 18); $(this).text((new Date("3/6/2009").getTime() - check.getTime() < 0)?"Under 18":"Over 18"); 

这仍将保持处理闰年所需的逻辑。

 $(this).text(((new Date().getFullYear()-Date.parts($(this).text()))>=18)?"Over 18":"Under 18"); 

更好? :d

您可以使用Date对象。 这将返回两个日期之间的毫秒数。 一年有31556952000毫秒。

 function dateDiff(var now, var dob) { return now.getTime() - dob.getTime(); } 

我的解决方案

 var startDt=document.getElementById("startDateId").value; var endDt=document.getElementById("endDateId").value; if( (new Date(startDt).getTime() > new Date(endDt).getTime())) { ---------------------------------- } 

请记住,以上所有答案仅适用于使用分隔符’/’的日期。 如果您正在使用其他,那么您必须先替换该分隔符。

 var startDate = $('#start_date').val().replace('-','/'); var endDate = $('#end_date').val().replace('-','/'); if(startDate > endDate){ // do stuff here... } 

快乐的编码:D