[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывести количество лет
Grey
Здравствуйте. Подскажите пожалуйста, как вывести сколько лет человеку. Дата рождения $dr - строковый формат вида 05.07.1987
Нужно получить, сколько лет человеку на данный момент



Спустя 17 минут, 10 секунд (16.03.2009 - 09:51) sergeiss написал(а):
Смотри в сторону функции date(), microtime(), и того, что с ними связано.

Спустя 8 дней, 7 часов, 7 минут, 59 секунд (24.03.2009 - 16:59) champion написал(а):
list(год, месяц...) = explode('.', '05.07.1987');
date('Y', time() - mktime(год, месяц...));

Спустя 1 час, 37 минут, 23 секунды (24.03.2009 - 18:37) Sylex написал(а):
http://ru.php.net/manual/ru/function.date.php#87850

мутно, конечно, очень, поправь там первую строчку только в функции

Спустя 43 минуты, 5 секунд (24.03.2009 - 19:20) twin написал(а):
Вот тут мы недавно сочинили

Спустя 25 минут, 58 секунд (24.03.2009 - 19:46) FatCat написал(а):
Вот код, которым в нашем форуме считается "стаж на форуме" - под аватаркой:
PHP
$summary_days ceil((time() - $member['joined'])/86400)-1//дни
        
$summary_yaers =  ceil($summary_days/365)-1//годы
        
        
$years "лет";
        if (
$summary_yaers%10 == "1" and $summary_yaers!="11"$years "год";
        if (
$summary_yaers%10 == "2" and $summary_yaers!="12"$years "года";
        if (
$summary_yaers%10 == "3" and $summary_yaers!="13"$years "года";
        if (
$summary_yaers%10 == "4" and $summary_yaers!="14"$years "года";
        
        
$summ_count_str .= $summary_yaers." ".$years.", ";
        
        
$summary_days2 $summary_days - ($summary_yaers*365); // дней меньше года
        
$summary_months "11 месяцев, ";
        
$summary_days3 $summary_days2 334;
        if(
$summary_days2 335){$summary_months "10 месяцев, "$summary_days3 $summary_days2 304;}
        if(
$summary_days2 305){$summary_months "9 месяцев, "$summary_days3 $summary_days2 273;}
        if(
$summary_days2 274){$summary_months "8 месяцев, "$summary_days3 $summary_days2 243;}
        if(
$summary_days2 244){$summary_months "7 месяцев, "$summary_days3 $summary_days2 212;}
        if(
$summary_days2 213){$summary_months "6 месяцев, "$summary_days3 $summary_days2 181;}
        if(
$summary_days2 182){$summary_months "5 месяцев, "$summary_days3 $summary_days2 151;}
        if(
$summary_days2 152){$summary_months "4 месяца, "$summary_days3 $summary_days2 120;}
        if(
$summary_days2 121){$summary_months "3 месяца, "$summary_days3 $summary_days2 90;}
        if(
$summary_days2 91){$summary_months "2 месяца, "$summary_days3 $summary_days2 59;}
        if(
$summary_days2 60){$summary_months "1 месяц, "$summary_days3 $summary_days2 31;}
        if(
$summary_days2 32){$summary_months ""$summary_days3 $summary_days2;}
        
        
$summ_count_str .= "<nobr>".$summary_months."</nobr>";
        
        
$days "дней";
        if (
$summary_days3 == "1" or $summary_days3 == "21" or $summary_days3 == "31"$days "день";
        if (
$summary_days3 == "2" or $summary_days3 == "3" or  $summary_days3 == "4"
        
or $summary_days3 == "22" or $summary_days3 == "23" or $summary_days3 == "24"$days "дня";
        
        
$summ_count_str .= "<nobr>".$summary_days3." ".$days."</nobr>";
        
        
$summ_count_str str_replace("0 лет, ","",$summ_count_str);
        
$summ_count_str str_replace(", 0 дней","",$summ_count_str);
        if(
$summary_days == 0)$summ_count_str "первый день";
        
$member['member_joined'] = "На форуме: ".$summ_count_str;

Спустя 14 минут, 31 секунда (24.03.2009 - 20:00) Sylex написал(а):
FatCat
$summary_yaers - ошибочно считается, мне кажется, я не уверен... т.к. кол-во дней в году разное...

Спустя 6 минут, 16 секунд (24.03.2009 - 20:06) Alchemist написал(а):
красивое слово - yaers smile.gif

Спустя 6 минут, 13 секунд (24.03.2009 - 20:13) FatCat написал(а):
Цитата (Sylex @ 24.03.2009 - 20:00)
т.к. кол-во дней в году разное...

Ага, високосные не учитываются, будет ошибка в день каждые 4 года. И число дней в месяце взято условно для старта отсчета 1 января, поэтому в другие месяцы может до 3 дней давать ошибки.
Для счетчика под аватаркой оно неточно, зато правильно. А то у пришедшего 1 января месяц набежит за 31 день, а у пришедшего 1 февраля - за 28... Нечестно.
Пузомерки должны быть честными. laugh.gif

Я там не особо упирался с цифрами, цифры наверное лучше через date() делать. А код привел потому, что хорошо сделана морфологическая обработка числительных.

Спустя 11 минут, 28 секунд (24.03.2009 - 20:24) Sylex написал(а):
Grey
тогда мой вариант:
PHP
<?php
echo floor((time()-strtotime('05.04.1987'))/(24*3600*365));

но думаю будет давать погрешности tongue.gif

Спустя 30 минут, 55 секунд (24.03.2009 - 20:55) apc написал(а):
Столько вразумительных и хороших ответов в одной теме ))

Спустя 17 часов, 59 минут, 48 секунд (25.03.2009 - 14:55) champion написал(а):
Кривоватенько smile.gif

Спустя 5 дней, 1 час, 45 минут, 28 секунд (30.03.2009 - 15:40) anonymouse написал(а):
PHP
$birthday=explode("-",$birthday);
$yea=$birthday[0];
$mon=$birthday[1];
$day=$birthday[2];
    
$fix 1;    
    if (
date('m') > $mon)
        
$fix 0;
    elseif (
date('m') == $mon)
    {
        if ((
date('d') < $day) or (date('d') == $day))
            
$fix 0;    
    }
   
$age date('Y') - $yea -  $fix;
    return(
$age);         
}



=)
Вот мой код ( ну в смысле нашел его + маленький уже потом доработки ).

Спустя 2 года, 2 месяца, 6 дней, 18 часов, 47 минут, 53 секунды (7.06.2011 - 10:28) proxzy написал(а):
опечатка в коде
должно быть (date('d') > $day)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.