<?php
function getAge() {
$f = Array(chr(89),chr(109),chr(100)); $v = func_get_args();
$ic = 1; $im = 0; $ns = !is_string($v[0]) && !is_string($v[1]);
if($ns) $c = array_slice($v, 3, 5);
elseif(count($v)-1) $c = explode(chr(46),$v[1]);
else $c = Array(0,0,0); $ic = count($c);
if($ic) for ($i=0; $i<3; $i++) $ic = $ic && $c[$i];
if($ns) $u = array_slice($v, 0, 3);
else $u = explode(chr(46),$v[0]);
if (!$ic) for($i=0; $i<3; $i++) $c[$i] = date($f[$i]);
else for($i=0; $i<3; $i++) $im = $u[$i] - $c[$i] + $im;
if($im>0) return 0; // если первая часть больше второй
if($u[1] > $c[1] || $u[1] == $c[1] && $u[2] > $c[2]) return $c[0] - $u[0] - 1;
return $c[0] - $u[0];
}
print getAge(1992,3,4). PHP_EOL; // сколько лет сейчас
print getAge(1992,3,4,2000,3,4). PHP_EOL; // сколько лет было в 2000.03.04
print getAge(1992,3,4,2090,3,4). PHP_EOL; // сколько будет лет в 2090.03.04
print getAge(2090,3,4,1992,3,4). PHP_EOL; // ошибка, первая часть больше второй
print getAge('1992.3.4','2000.3.4'). PHP_EOL; // текстовый формат
print getAge('1992.03.04','2000.03.04'). PHP_EOL; // текстовый формат с поддержкой 0
?>
Так же код можно использовать в других целях, например для того, чтобы в PHP посчитать сколько лет между двумя датами.