Отображать возраст от даты рождения?
Привет у меня есть сайт с пользователями, отображаемыми на первой странице. Когда пользователи регистрируются на сайте, они регистрируются со своей датой рождения. Это хранится в моей базе данных.
Я вытащил пользователей из базы данных и отобразил их местоположение и имя.
Я также пытаюсь добавить их возраст, который рассчитывается по дате их рождения. Но на данный момент это не сработает, возраст пользователей не отображается.
Может кто-нибудь помочь мне найти, где я иду не так?
Код:
<?php
$dob = $platinum['dob'];
function age_from_dob($dob) {
list($y,$m,$d) = explode('-', $dob);
if (($m = (date('m') - $m)) < 0) {
$y++;
} elseif ($m == 0 && date('d') - $d < 0) {
$y++;
}
return date('Y') - $y;
}
$dob = age_from_dob($dob);
?>
<?
$platinum_set = get_platinum_users();
while ($platinum = mysql_fetch_array($platinum_set)) {
echo"
<div class=\"platinumcase\">
<a href=\"profile.php?id={$platinum['id']}\"><img width=80px height= 80px src=\"data/photos/{$platinum['id']}/_default.jpg\" class=\"boxgrid\"/></a><h58> {$platinum['first_name']} {$platinum['last_name']}</h58><br/><br/><h52>{$platinum['$dob']}<br/><br/>{$platinum['location']}</h52>
</div>";
}
?>
3 ответа
Решение
function age_from_dob($dob) {
return DateTime::createFromFormat('Y-m-d',$dob, $tz)->diff(new DateTime('now', $tz))->y;
}
Я не знаю, какой шаблонизатор вы используете, а что разрешено, а что нет... но обычно самый простой способ - лучший... так что попробуйте
<?php
$dob = $platinum['dob'];
function age_from_dob($dob) {
$dob = '1999-12-03';
$age = date_diff(date_create($dob), date_create('now'))->y;
return $age;
}
?>
<?
$platinum_set = get_platinum_users();
while ($platinum = mysql_fetch_array($platinum_set)) {
$age = age_from_dob($platinum['dob']);
echo "
<div class=\"platinumcase\">
<a href=\"profile.php?id={$platinum['id']}\"><img width=80px height= 80px src=\"data/photos/{$platinum['id']}/_default.jpg\" class=\"boxgrid\"/></a><h58> {$platinum['first_name']} {$platinum['last_name']}</h58><br/><br/><h52> ".$age." <br/><br/>{$platinum['location']}</h52>
</div>";
}
?>
Я использую эту функцию, чтобы вернуть возраст моего пользователя. Надеюсь это поможет
function HowOld($DOB)
{
if($DOB)
{
$birthday = strtotime($DOB);
$date = strtotime(date("Y-m-d "));
$difference = $date - $birthday;
$years = $difference/(60 * 60 * 24 * 365);
$value = floor($years);
return $value;
}
return false;
}