Возраст по дате рождения в PHP
Многие php-шники сталкивались с вопросом как вычислить сколько лет человеку по дате рождения.
  Наступил момент когда пришлось написать код самому и запостить, так как общарив инет и видя кучу предложенных вариантов которые не работают хочеться проявить инициативу и если где то вылезит ошибка не судите строго :)  
 
 предлогаю вам следующий PHP код на рассмотрение:
/*############################
# danro82[at]mail.ru
# icq:137-213-137
# skype:halabudenco
# yahoo:halabudenco
# donate:
# webmoney:R470659605468
##############################*/
 /* принимает формат даты
  $date_birth = '1979-10-12';
  $date_now = date('Y-m-d');
  $age = new age();  
  echo $age->getAgeWithW(date('1983-17-03'));
 */
 
$age = new age();
class age
{
 
 function age(){} // конструктор не обязателен 
 function getAgeWithW($date_birth){
 //$date_birth - дата дня рождения 
 //date('Y-m-d') - сегодняшняя дата 
 $year=$this->get_age($date_birth, date('Y-m-d')); // вызываем функцию get_age
 
 $year= $year['years']."";// переводим в строку
 /* определяем года или год или лет */
 if(strlen($year)==3){
 if($year[2]==1){$age=" год";}
 if($year[2]>1 && $year[2]<5){$age=" года";}
 if($year[2]>=5 || $year[2]==0){$age=" лет";}
 }elseif(strlen($year)==2){
 if($year[1]==1 && strlen($year)<2){$age=" год";}
 if($year[1]>1 && $year[1]<5){$age=" года";}
 if($year[1]>=5 || $year[1]==0){$age=" лет";}
 if($year>5 && $year<21){$age=" лет";}      
 }else{
 if($year[0]==1){$age=" год";}
 if($year[0]>1 && $year[0]<5){$age=" года";}
 if($year[0]>=5 || $year[0]==0){$age=" лет";}
 } 
 return $year.$age;
 }
  
  
  function get_age($start_date, $end_date) {
   // парсим переменные через list 
   list($start_year,$start_month,$start_date) = split('-', $start_date);
   list($current_year,$current_month,$current_date) = split('-', $end_date);
   $result = '';
 
   /** дни для каждого месяца **/
 
   for($x=1 ; $x<=12 ; $x++){
    $dim[$x] = date('t',mktime(0,0,0,$x,1,date('Y')));
   }
 
   /** вычесляем разницу между датами годом, месяцем, днём **/
    $m = $current_month - $start_month;
   $d = $current_date - $start_date;
   $y = $current_year - $start_year;
 
     /** если сегодняшняя дата дня меньше даты дня рождения **/
 
   if($d < 0) {
     $today_day = $current_date + $dim[$current_month];
    $today_month = $current_month - 1;
    $d = $today_day - $start_date;
    $m = $today_month - $start_month;
    if(($today_month - $start_month) < 0) {
     $today_month += 12;
     $today_year = $current_year - 1;
     $m = $today_month - $start_month;
     $y = $today_year - $start_year;
    }
 
   }
 
     /** если сегодняшняя дата месяца меньше даты месяца рождения **/
  if($m < 0) {
     $today_month = $current_month + 12;
    $today_year = $current_year - 1;
    $m = $today_month - $start_month;
    $y = $today_year - $start_year;
   }
   
   /* записываем данные в массив */
   $r['years']=$y; // год рождения
    $r['month']=$m; // месяц рождения
   $r['days']=$d;  // день рождения  
  return $r;
  }
}
 
Если данные храняться в базе mysql большую чать кода можно обойти, но это в следующей статье. 
:Владимир  
 
 
 источник: dosug.md - Для правообладателей  
 
 







