Отображать возраст от даты рождения?

Привет у меня есть сайт с пользователями, отображаемыми на первой странице. Когда пользователи регистрируются на сайте, они регистрируются со своей датой рождения. Это хранится в моей базе данных.

Я вытащил пользователей из базы данных и отобразил их местоположение и имя.

Я также пытаюсь добавить их возраст, который рассчитывается по дате их рождения. Но на данный момент это не сработает, возраст пользователей не отображается.

Может кто-нибудь помочь мне найти, где я иду не так?

Код:

 <?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;
    }
Другие вопросы по тегам