Рассчитать возраст, основанный на дате рождения

У меня есть таблица пользователей в sql, и у каждого из них есть даты рождения. Я хочу преобразовать их дату рождения в их возраст (только годы), например, дата: 15.03.1999 возраст: 14 и 15.03.2014 возрастет до 15

Здесь я хочу показать дату пользователя:

 if(isset($_GET['id'])) { $id = intval($_GET['id']); $dnn = mysql_fetch_array($dn); $dn = mysql_query('select username, email, skype, avatar, ' . 'date, signup_date, gender from users where id="'.$id.'"'); $dnn = mysql_fetch_array($dn); echo "{$dnn['date']}"; } 

PHP > = 5.3.0

 # object oriented $from = new DateTime('1970-02-01'); $to = new DateTime('today'); echo $from->diff($to)->y; # procedural echo date_diff(date_create('1970-02-01'), date_create('today'))->y; 

демонстрация

функции: date_create() , date_diff()


MySQL > = 5.0.0

 SELECT TIMESTAMPDIFF(YEAR, '1970-02-01', CURDATE()) AS age 

демонстрация

функции: TIMESTAMPDIFF() , CURDATE()

Очень маленький код, чтобы получить Возраст:

 <?php $dob='1981-10-07'; $diff = (date('Y') - date('Y',strtotime($dob))); echo $diff; ?> //output 35 

Получил этот скрипт из сети (благодаря coffeecupweb)

 <?php /** * Simple PHP age Calculator * * Calculate and returns age based on the date provided by the user. * @param date of birth('Format:yyyy-mm-dd'). * @return age based on date of birth */ function ageCalculator($dob){ if(!empty($dob)){ $birthdate = new DateTime($dob); $today = new DateTime('today'); $age = $birthdate->diff($today)->y; return $age; }else{ return 0; } } $dob = '1992-03-18'; echo ageCalculator($dob); ?> 

Псевдоним для PHP-класса DateTime может дать вам возраст в годах. В этом примере игнорируется время суток, предполагая, что $dob – это $dob yyyy-mm-dd .

 date_diff(date_create($dob), date_create(date('Ym-d'))->y 

Ссылка Ссылка http://www.calculator.net/age-calculator.html

 $hours_in_day = 24; $minutes_in_hour= 60; $seconds_in_mins= 60; $birth_date = new DateTime("1988-07-31T00:00:00"); $current_date = new DateTime(); $diff = $birth_date->diff($current_date); echo $years = $diff->y . " years " . $diff->m . " months " . $diff->d . " day(s)"; echo "<br/>"; echo $months = ($diff->y * 12) + $diff->m . " months " . $diff->d . " day(s)"; echo "<br/>"; echo $weeks = floor($diff->days/7) . " weeks " . $diff->d%7 . " day(s)"; echo "<br/>"; echo $days = $diff->days . " days"; echo "<br/>"; echo $hours = $diff->h + ($diff->days * $hours_in_day) . " hours"; echo "<br/>"; echo $mins = $diff->h + ($diff->days * $hours_in_day * $minutes_in_hour) . " minutest"; echo "<br/>"; echo $seconds = $diff->h + ($diff->days * $hours_in_day * $minutes_in_hour * $seconds_in_mins) . " seconds"; echo "<br/>"; 

В следующем коде функции date() , date_create() и date_diff() используются для расчета возраста пользователя до сегодняшнего дня.

 $dateOfBirth = "17-10-1985"; $today = date("Ymd"); $diff = date_diff(date_create($dateOfBirth), date_create($today)); echo 'Age is '.$diff->format('%y'); 

Существует простой способ найти дату с любой даты рождения, используя substr PHP

 $birth_date = '15.03.2014'; $date = substr($birth_date, 0, 2); echo $date; 

Это просто даст вам дату выхода этой даты рождения.

В этом случае это будет 15 .

См. Подстроку PHP для более …

 <?php function getAge($dob) { $today = date("Ymd"); $diff = date_diff(date_create($dob), date_create($today)); return $diff->format('%yYears, %mMonths, %dDays'); } echo getAge('19-10-1988'); ?> 

Демо-1 Демо-2

declare @dateOfBirth date select @dateOfBirth = '2000-01-01'

SELECT datediff(YEAR,@dateOfBirth,getdate()) as Age

  $dob = $this->dateOfBirth; //Datetime $currentDate = new \DateTime(); $dateDiff = $dob->diff($currentDate); $years = $dateDiff->y; $months = $dateDiff->m; $days = $dateDiff->d; $age = $years .' Year(s)'; if($years === 0) { $age = $months .' Month(s)'; if($months === 0) { $age = $days .' Day(s)'; } } return $age; 

На день рождения с форматом Дата / Месяц / Год

 function age($birthday){ list($day, $month, $year) = explode("/", $birthday); $year_diff = date("Y") - $year; $month_diff = date("m") - $month; $day_diff = date("d") - $day; if ($day_diff < 0 && $month_diff==0) $year_diff--; if ($day_diff < 0 && $month_diff < 0) $year_diff--; return $year_diff; } 

или той же функции, которая принимает день, месяц, год в качестве параметров:

 function age($day, $month, $year){ $year_diff = date("Y") - $year; $month_diff = date("m") - $month; $day_diff = date("d") - $day; if ($day_diff < 0 && $month_diff==0) $year_diff--; if ($day_diff < 0 && $month_diff < 0) $year_diff--; return $year_diff; } 

Вы можете использовать его следующим образом:

 echo age("20/01/2000"); 

который выведет правильный возраст (4 июня – 14).