Как определить, сколько прожил человек до сего дня?

dim-dem

Новичок
Как определить, сколько прожил человек до сего дня?

Есть такие, например, данные.

$d=26; $m=02; $y=1980; // дата pождения ДД.ММ.ГГГГ

Как определить, сколько прожил человек до сего дня?

Помогите, плз.
 

RomikChef

Guest
$let= date("Y")-$y;
if ($m < date("m") and $d < date("d")) $let--;
echo "прожил $let";

отальное сам вычислишь?
 

Ростислав

Guest
отальное сам вычислишь?
А високосные года?

Когда-то в каком-то еще советской книге была ф-ла...

А вобще-то мы этим на парах развлекались. На бумажечке считали.

Берем сколько дней до конца года... Плюс сколько лет*365 Плюс сколько високосных годов (Високосный - каждый 4-й(?) год, 1600,1700 и т.д. (не актуально) не високосные, зато 1000, 2000 - високосные)... Плюс сколько дней с начала года...
 

RomikChef

Guest
а при чем тут, позвольте спросить, високосные года?
или ты имеешь в виду день рождения ,пришедшийся на 29 февраля?
ну напиши исключение, если тебе очень хочется.
 

alpes

Весь мир на ладони
Да народ балуется, хочет статисстику получить [лет,дней,минут,...]. Формулу сам не может вывести вот и спрашает. В году 364 дня плюс на один в каждом четвертом (т.е. высокосном) больше. Все данные есть а в кучу собрать влом.
Если проверяемая дата рождения больше January 1 1970 00:00:00 GMT то можно так:
PHP:
$TotalSeconds=time()-mktime(0,0,0,$m,$d,$y);
А уж из общего числа прожитых секунт высчитать все остальное - как два байта переслать ;)

PS. У ф-ий есть верхний предел до 19-01-2038
 

wanderer

PHP - rulez!...
оффтоп: мне всегда казалось, что в обычном году 365 дней? или я не прав?
 

RomikChef

Guest
alpes, гораздо важнее то, что у этой функции есть нижний предел, и для манипуляция с днями рождений она абсолютно точно не годится.
 

dim-dem

Новичок
А как можно сделать запрос из MySQL базы данных?

Есть такие анкетные данные:
$d - день
$m - месяц
$y - год
Как выбрать людей, например возрастом от 20 до 30 лет?

Заранее большой пасиб.
 

alpes

Весь мир на ладони
1.Данные в таблице д.б. в формате DATE
2.SELECT * FROM Table1 WHERE DateBirth > SUBDATE(NOW(), INTERVAL 30 YEAR) AND DateBirth < SUBDATE(NOW(), INTERVAL 20 YEAR)
 

4you

еееххххх....
Если быть точным то в любом году 365 дней и 6 часов. Таким образом тебе не надо учитывать какой сейчас год, висакосный или нет.
 

alpes

Весь мир на ладони
Кстати, возвращаясь к предыдущей идее по количеству прожитых секунд, немного отрихтовав моно получить следующий код:
PHP:
if($y<1970)
{
  $k=(int)((1970-$y)/4)+1;
  $y1=$y+$k*4;
  //126230400 секунд ~ (365*4+1)*24*60*60 ~ 4 годам
  $TotalSeconds=$k*126230400-mktime(0,0,0,$m,$d,$y1)+time();
}else $TotalSeconds=time()-mktime(0,0,0,$m,$d,$y);
 
Сверху