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

Rob*_*Day 20 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");
}
Run Code Online (Sandbox Code Playgroud)

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

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

Ken*_*ing 25

您可能会发现开源Datejs库很有帮助.特别是addYears功能.

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

以更简洁的方式:

$(this).text(
    Date.parse($(this).text()).addYears(18) < Date.today() ?
    "Under 18" :
    " Over 18"
)
Run Code Online (Sandbox Code Playgroud)

  • 这里的运营商不应该超过? (2认同)

Dav*_*ave 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");
}
Run Code Online (Sandbox Code Playgroud)