Раньше я делал это, принимая разницу между двумя датами Зенд, но это очень сложно, как справедливо замечает Эльзо Валуги выше. Лучше использовать человеческий подход. Ваш возраст в годах - это разница между годовой частью обеих дат, если день вашего рождения уже был, если нет, на один год меньше. Нечто подобное можно сделать с месяцами.
function age($birthDate, $date)
{
$age = $date->get(Zend_Date::YEAR) - $birthDate->get(Zend_Date::YEAR);
$birthDay = clone $birthDate; // otherwise birthDate will be altered, objects are always passed by reference in PHP 5.3
$birthDay->set($date, Zend_Date::YEAR); // birthDay in the year of $date
if (1 == $BirthDay->compare($date)) {
$age = $age -1; // if birth day has not passed yet
}
return $age;
}