Я использую этот JavaScript, чтобы проверить, является ли введенный возраст старше 18 лет.
function calculateDiffYear(date, month, year)
{
var cur = new Date();
var diff = Math.floor((cur.getTime() - new Date(year, month, date)) / (60 * 60 * 24 * 1000));
diff -= Math.floor((cur.getFullYear() - year) / 4);
return diff / 365;
}
function checkBorn(sender)
{
var root = sender.form;
var date = root.elements['date'].value;
var month = root.elements['month'].value - 1;
var year = root.elements['year'].value;
if (!isValidDate(date, month, year) || calculateDiffYear(date, month, year) < 18) return false;
return true;
}
Если работает почти правильно, за исключением того, что у нас високосный год, он дает старше 18 лет человеку, которому завтра становится 18 завтра , по крайней мере в тестах, которые я делаю с сегодняшней датой. и меняется на последний год. Я попытался добавить это, но не повезло:
if ($('#leap').val()) divider = 366;
else divider = 365;
return diff / divider;
Знаете, как я могу это решить?
Спасибо