Это довольно просто.Сначала получите текущее время и сохраните его в переменной.Затем получите возраст в миллисекундах (принимая во внимание, что до 1969 года временные метки были отрицательными, следовательно, троичный оператор).Возраст теперь указывается в миллисекундах, поэтому разделите его на количество миллисекунд в году (60 * 60 * 24 * 365)
function getAge($birth){
$t = time();
$age = ($birth < 0) ? ( $t + ($birth * -1) ) : $t - $birth;
return floor($age/31536000);
}
Чтобы получить возраст на определенную дату, просто создайте метку времени длядень нужен вместо использования текущего времени.
$t = mktime(0, 0, 0, 4, 31, 2012); // <-- April 31st, 2012