Intereting Posts
Тернарный оператор в PHP Невозможно опубликовать текст в MySQL, используя «Insert Into» как создать безопасную систему регистрации php, позволяющую использовать функцию «сохранить меня в системе»? Как получить идентификатор адреса доставки / биллинга заказа за пределами API-интерфейса Magento? PHP – передача функций возвращается к другой функции Как веб-сайт взломан «злонамеренно закодированным изображением, содержащим скрытый внутри него скрипт PHP»? Географические координаты названия улиц Ошибка PHP PDO при попытке параметризовать SQL LIMIT: offset,: display? Как загрузить страницу PHP в div с помощью jQuery и AJAX? Исследуйте необработанные SQL-запросы в Laravel 4 ReCaptcha 2.0: включить кнопку «Отправить» при обратном вызове, если recaptcha успешно Magento REST API OAuth Проблема Xdebug и Netbeans Обнаруживать, установлен ли Mod_Security с помощью PHP? Уведомление о добавлении новой записи в базу данных php-jquery

Вычисление возраста с даты рождения в PHP

Какова самая точная функция, с которой вы столкнулись, чтобы определить возраст от даты рождения. У меня есть следующий код, и мне было интересно, как его можно улучшить, поскольку он не поддерживает все форматы дат и не уверен, что это самая точная функция (соответствие даты и времени было бы приятным).

function getAge($birthday) { return floor((strtotime(date('dm-Y')) - strtotime($date))/(60*60*24*365.2421896)); } 

Solutions Collecting From Web of "Вычисление возраста с даты рождения в PHP"

 $birthday = new DateTime($birthday); $interval = $birthday->diff(new DateTime); echo $interval->y; 

Должно сработать

Проверь это

 <?php $c= date('Y'); $y= date('Y',strtotime('1988-12-29')); echo $c-$y; ?> 

Попробуйте использовать DateTime для этого:

 $now = new DateTime(); $birthday = new DateTime('1973-04-18 09:48:00'); $interval = $now->diff($birthday); echo $interval->format('%y years'); // 39 years 

Смотрите это в действии

Используйте этот код, чтобы иметь полный возраст, включая годы, месяцы и дни,

  <?php //full age calulator $bday = new DateTime('02.08.1991');//dd.mm.yyyy $today = new DateTime('00:00:00'); // Current date $diff = $today->diff($bday); printf('%d years, %d month, %d days', $diff->y, $diff->m, $diff->d); ?> 

Это работает:

 <? $date = date_create('1984-10-26'); $interval = $date->diff(new DateTime); echo $interval->y; ?> 

Если вы скажете мне, в каком формате придет ваша переменная $birthday я дам вам точное решение

WTF?

StrToTime (дата ( 'ого-Y'))

Итак, вы генерируете строку даты из текущей временной метки, а затем преобразуете строку даты обратно в метку времени?

Кстати, одна из причин, по которой он не работает, заключается в том, что strtotime () предполагает, что числовые даты должны быть в формате m / d / y (т.е. формат даты в США). Другая причина заключается в том, что параметр ($ birthday) не используется в формуле.

Измените $date на $birthday .

Для точности ужина вам нужно учитывать коэффициент високосного года:

 function get_age($dob_day,$dob_month,$dob_year){ $year = gmdate('Y'); $month = gmdate('m'); $day = gmdate('d'); //seconds in a day = 86400 $days_in_between = (mktime(0,0,0,$month,$day,$year) - mktime(0,0,0,$dob_month,$dob_day,$dob_year))/86400; $age_float = $days_in_between / 365.242199; // Account for leap year $age = (int)($age_float); // Remove decimal places without rounding up once number is + .5 return $age; } 

Поэтому используйте:

 echo get_date(31,01,1985); 

или что-то еще …

NB Чтобы увидеть ваш точный возраст до десятичного

 return $age_float 

вместо.

Эта функция работает нормально.

 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; } 

Посмотреть сообщение BLOG Post

вот моя длинная / подробная версия (вы можете сделать ее короче, если хотите):

 $timestamp_birthdate = mktime(9, 0, 0, $birthdate_month, $birthdate_day, $birthdate_year); $timestamp_now = time(); $difference_seconds = $timestamp_now-$timestamp_birthdate; $difference_minutes = $difference_seconds/60; $difference_hours = $difference_minutes/60; $difference_days = $difference_hours/24; $difference_years = $difference_days/365; 

что, я опаздываю, чтобы ответить? : D