Я думаю, что для этого лучше всего использовать класс DateTime.
$bday = new DateTime("22-10-1993");
$bday->add(new DateInterval("P18Y")); //adds time interval of 18 years to bday
//compare the added years to the current date
if($bday < new DateTime()){
echo "over 18";
}else{
echo "below 18";
}
DateTime :: diff также можно использовать для сравнения даты с текущей датой.
$today = new DateTime(date("Y-m-d"));
$bday = new DateTime("22-10-1993");
$interval = $today->diff($bday);
if(intval($interval->y) > 18){
echo "older than 18";
}else{
echo "younger than 18";
}
N / B: 1) для второго метода, если $ bday больше, чем $ сегодня, на 18 или более лет, он вернется старше, поэтому убедитесь, что введенная дата меньше, чем $ сегодня
, 2) DateTime работает на php 5.2.0 и выше