|
|
|
| как же правильнее?
<?php
$age="";
$dt=date("Y-m-d");
$Y=date("Y");
$m=date("m");
$d=date("d");
$berth="2008-02-21";
// echo $berth;
$god = substr($berth,0,-6);
// echo $god;
$month =substr($berth,5,-3);
// echo $month;
$day =substr($berth,8);
// echo $day;
if($month>$m){
$age = $Y-$god;
}
if ($month<$m){
$age = $Y-$god-1;
echo $age;
}
else {
echo $age;
}
|
| |
|
|
|
|
|
|
|
для: helovek
(21.02.2009 в 17:57)
| | а данные из БД идут? | |
|
|
|
|
|
|
|
для: а-я
(21.02.2009 в 18:56)
| | Нет пока не идут, не доходят пока! | |
|
|
|
|
|
|
|
для: helovek
(21.02.2009 в 17:57)
| | вот так думаю будет правильней
<?php
$berth="1980-02-23";
$age = date("Y", strtotime("now")) - date("Y", strtotime($berth));
if (date("n", strtotime("now")) < date("n", strtotime($berth))) {
$age--;
}
if (date("n", strtotime("now")) === date("n", strtotime($berth))) {
if (date("j", strtotime("now")) < date("j", strtotime($berth))) {
$age--;
}
}
echo "Вам <b>$age</b> полных лет";
?>
|
сюда нужно еще включить проверку на правильность введенной даты :) | |
|
|
|
|
|
|
|
для: HaJIuBauKa
(22.02.2009 в 04:33)
| | Большое спасибо! | |
|
|
|
|
|
|
|
для: helovek
(21.02.2009 в 17:57)
| | Тоже сегодня задумался над этим вопросом.
Вот че придумал:
<?php
$bd = '1930-10-25'; // Дата рождения
$b = explode('-', $bd); // Разбираем ее на части
$cy = date("Y"); // Текущий год
$age = $cy - $b[0]; // Возраст методом вычисления годов
$bd_cy = $cy.$b[1].$b[2]; // Дата дня рождения в этом году
$now = date("Ymd"); // Текущая дата целиком
// Сравниваем даты, если текцщая дата
// меньше даты дня рождения в этом году, отнимаем 1 год.
if($now < $bd_cy) $age--;
echo $age;
?>
|
Думаю, что это должно работать точно, с любыми датами рождения. :) | |
|
|
|
|
|
|
|
для: helovek
(21.02.2009 в 17:57)
| | Так, будет проще. Дата рождения никак не ограничена, главное соблюдать ее формат.
<?php
// Важно, чтобы дата была в таком формате
$berth = '1901-02-21';
// Если дата не соответствует формату выше,
// то в этой строке нужно привести ее к формату
// 19010221 (yyyymmdd)
$bday = (int)str_replace('-', '', $berth);
$now = (int)date('Ymd');
$age = floor(($now - $bday) / 10000);
echo $age;
|
| |
|
|
|
|
|
|
|
для: helovek
(21.02.2009 в 17:57)
| | я делал вот так. правда под определенный формат:
<?php
function hm_years($date)
{
// находим год в дате
$year_date = substr((strrchr($date,".")),1);
// находим разность с текущим
$years_diff = date("Y") - $year_date;
// возвращаем кол-во плных лет
return $years_diff;
}
|
| |
|
|
|