Форум сетевых администраторов
Показаны 6 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Расчет возроста (http://netadmin.ws/forum/showthread.php?threadid=7971)


Помещено he][es 26-02-2004 в 19:00:

Unhappy Расчет возроста

Я видимо просто туплю, но я не могу понять как посчитать возрост чел-ка.
Есть столбец с датой рождения типа Date в БД. Есть текущая дата... Но как посчитать возраст я не понимаю...
Если сделать так:

PHP:


SELECT UNIX_TIMESTAMP
(data_rogdenia) from table;
$birthday = UNIX_TIMESTAMP(data_rogdenia);
$now = time();

$age=$now-$borthday;
$age = date("Y y",$age);


то получим полную ерунду (и я почти понимаю почему) А как тогда посчитать правильно???
(просто взять года из БД и сейчас и отнять это не выход как понимаете)
Извините за глупый вопрос, но 2ой день сижу ничего не могу придумать...

__________________
Админ - вождь Апачей...


Помещено GenUS 26-02-2004 в 20:50:


PHP:


$a 
= 507824359; // Дата рождения в "unix timestamp"
$b = time(); // Текущая дата
$age = floor((abs($b-$a))/31557600); // Возраст


31557600 - кол-во секунд в году.
0 в "unix timestamp" = 1 янв 1970г. 00:00.00

__________________
.


Помещено he][es 26-02-2004 в 20:57:

GenUS вот спасибо! =)
А то у меня ступор какой то...

he][es добавил 26-02-2004 в 21:01:49:
А что бы определить что написать после возраста "лет" или "года" никто ф-ий не писал?
Как я понимаю 1-4 на конце - "год(а)" остальное "лет" искл. 11-14... Так?

__________________
Админ - вождь Апачей...


Помещено GenUS 26-02-2004 в 21:33:

По порядку определения:
11-19 - лет
на конце 0 - лет
на конце 1 - год
на конце 2-4 - года
на конце 5-9 - лет

кажется так ...

GenUS добавил 26-02-2004 в 21:35:26:
К стате запомни, если дата рождения будет раньше 1970 года - придется другой способ вычисления искать ... т.к. "unix timestamp" раньше 1970 года не бывает ...

__________________
.


Помещено Vanish 26-02-2004 в 21:42:

Когда то очень давно писал я функцию для склонения окончаний:
Нашел в закромах

PHP:


function dig_end($dig, $end1, $end2, $end3)
{
    if (
$dig == '1') return $end1;
    elseif (
$dig >= '2' && $dig <= '4') return $end2;
    else return 
$end3;

}

function 
get_end($num, $end1, $end2, $end3)
{
    if (
$num <= '20')
    {
        return 
$this->dig_end($num, $end1, $end2, $end3);
    } else {
        return 
$this->dig_end($num%10, $end1, $end2, $end3);
    }
}


Вызывалась примерно так:

PHP:

get_end
($value, 'день', 'дня', 'дней');

__________________
No pity, no mercy, no regret.


Помещено he][es 26-02-2004 в 21:50:

Пасибо баааальшоооое
GenUS старше не будут... зачем нам девушки старше?..

__________________
Админ - вождь Апачей...


Формат времени GMT. Текущее время 16:02.
Показаны 6 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.