Есть дата рождения. Есть текущая дата. Надо узнать скока человеку лет. В голове одна каша! Перевожу обе даты в timestamp, считаю их разницу, остаётся понять как из этой кучи секунд получить года?
PHP: <?php function calc_period($date_start, $date_finish) { $st = explode('-', date('d-m-Y-H-i-s', $date_start)); $fin = explode('-', date('d-m-Y-H-i-s', $date_finish)); if (($seconds = $fin[5] - $st[5]) < 0) { $fin[4]--; $seconds += 60; } if (($minutes = $fin[4] - $st[4]) < 0) { $fin[3]--; $minutes += 60; } if (($hours = $fin[3] - $st[3]) < 0) { $fin[0]--; $hours += 24; } if (($days = $fin[0] - $st[0]) < 0) { $fin[1]--; $days = date('t', mktime(1, 0, 0, $st[1], $st[0], $st[2])) - $st[0] + $fin[0]; } if (($months = $fin[1] - $st[1]) < 0) { $fin[2]--; $months += 12; } $years = $fin[2] - $st[2]; return array($seconds, $minutes, $hours, $days, $months, $years); } // Примеры использования $date_finish = strtotime("1-03-2008"); $date_start = strtotime("31-01-2008"); $result = calc_period($date_start, $date_finish); echo 'C ' . date('h:i:s d-m-y', $date_start) . ' по '. date('h:i:s d-m-y', $date_finish) .' прошло ' . $result[0] . ' секунд ' . $result[1]. ' минут ' .$result[2] . ' часов ' .$result[3] . ' дней ' . $result[4] . ' месяцев ' . $result[5] . ' лет <br>'; ?>
Посчитать возраст человека, дата рождения которого хранится в поле DATE PHP: SELECT name, IF ((MONTH(NOW())>MONTH(birthday)),(YEAR(NOW())-YEAR(birthday)), IF ((MONTH(NOW())>IF ((DAYOFMONTH(NOW())>=DAYOFMONTH(birthday)),(YEAR(NOW())-YEAR(birthday)), IF ((MONTH(NOW())>(YEAR(NOW())-YEAR(birthday)-1))) as years_old FROM person
Врать только не надо) PHP: <?php $a = mktime(0,0,0,9,1,1991); $c = time() - $a; $d = date("Y", $c); $b = $d - 1970; echo "Онотолию $b лет"; ?>
PHP: <? $a = mktime(0,0,0,3,5,2007); $c = time() - $a; $d = date("Y", $c); $b = $d - 1970; echo "Онотолию $b лет"; ?> Сегодня - 4 марта 2008 года: >>Онотолию 1 лет Хотя, будет 1, только завтра
Naydav PHP: <? $a = mktime(23,60,61,3,5,2007); $c = time() - $a; $d = date("Y", $c); $b = $d - 1970; echo "Онотолию $b лет"; ?>
исходя из этого скрипта, толяну всё равно 1 год =/ если уж полный возраст надо узнать (т.е. без учёта дня рождения), то зачем mktime и прочие извращенства использовать? И кстати орфографическая ошибка...ОнотолЕй пишется через Е PHP: <?php $d = date("Y"); $b = $d - 1970; echo 'Онотолею'. $b. 'лет'; ?>
Ы Прав=)))) но мк тайм всёравно нужен например дата рождения 01.09.1991 а сёдня дата 01.08.2008 2008-1991 = 17 а ему 17ти ещё нет)) а да это посто не точность в секундах=\
PHP: <?php $a = mktime(0,0,0,9,1,1991); $c = time() - $a; $d = date("Y", $c); $b = $d - 1970; echo "Онотолию $b лет"; ?> да ёпт, я это в первый раз именно так и реализовал! гнилой этот метод в том, что если задать дату рождения 1915 - Онотолею блять минус сорок четыре года!! (соре за излишнюю эмоциональность. с новой аватарой я стал раздражительным =\) ЗЫ трудна бля быть не таким как фсе =\
function Change_year(bd_day, bd_month, bd_year) { var _age; var d = new Date(); cur_day = d.getDate(); cur_month = d.getMonth() + 1; cur_year = d.getFullYear(); _age = cur_year - bd_year; if(cur_month < bd_month) { _age -= 1; } else if(cur_month == bd_month) { if(cur_day < bd_day) _age -= 1; } if(_age < 0) _age = 0; return _age; }