代码之家  ›  专栏  ›  技术社区  ›  Robin Day

使用JQuery从出生日期算起的年龄

  •  20
  • Robin Day  · 技术社区  · 17 年前

    我需要使用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 回复  |  直到 17 年前
        1
  •  25
  •   Ken Browning    17 年前

    你可能会找到开源软件 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"
    )
    
        2
  •  9
  •   Dónal    16 年前
    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");
    }
    
        3
  •  3
  •   Parrots    17 年前

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

    这仍将保持应对闰年所需的逻辑。

        4
  •  1
  •   Sudhir Jonathan    17 年前
    $(this).text(((new Date().getFullYear()-Date.parts($(this).text()))>=18)?"Over 18":"Under 18");
    

    更好D

        5
  •  1
  •   Vikash Singh    12 年前

    请记住,以上所有答案仅适用于使用分隔符“/”的日期。如果您使用的是其他的,那么您必须首先更换该分离器。

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

        6
  •  0
  •   Jason Plank Maksim Kondratyuk    14 年前

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

    function dateDiff(var now, var dob)
    {
        return now.getTime() - dob.getTime();
    }
    
        7
  •  0
  •   eeerahul Stalin Pimentel    14 年前

    我的解决方案。

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