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

时间:2009-03-18 14:33:56

标签: javascript jquery datetime

我需要使用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个字符的数据库字段中。更改数据库不是快速或容易发生的事情。

7 个答案:

答案 0 :(得分:25)

您可能会发现开源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"
)

答案 1 :(得分:9)

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");
}

答案 2 :(得分:3)

您可以删除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");

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

答案 3 :(得分:1)

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

更好? :d

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

我的解决方案。

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

答案 6 :(得分:0)

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

var startDate = $('#start_date').val().replace('-','/');
var endDate = $('#end_date').val().replace('-','/');

if(startDate > endDate){
   // do stuff here...
}

快乐的编码:D