Подтвердить что ты не робот

Возраст от даты рождения с помощью JQuery

Мне нужно рассчитать, если кто-то старше 18 лет со дня рождения с помощью JQuery.

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 символами. Изменение базы данных - это не то, что может произойти быстро или легко.

4b9b3361

Ответ 1

Вы можете найти библиотеку с открытым исходным кодом 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

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

Вы можете удалить отдельную переменную для 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

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

лучше?: D

Ответ 5

Вы можете использовать объект Date. Это вернет миллисекунды между двумя датами. Есть 31556952000 миллисекунд в год.

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

Ответ 6

Мое решение.

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

Ответ 7

Имейте в виду, что все приведенные выше ответы работают только для даты, используя разделитель '/'. если вы используете другое, это значит, что вы должны сначала заменить этот разделитель.

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

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

счастливое кодирование: D