|
|
|
|
|
для: chexov
(05.03.2008 в 17:50)
| | Точность день в день, проверьте сами:
function mysql2data($sqldata,$b=NULL) {
global $wmm;
$sqldata=str_replace(' ','-',$sqldata);
$val = explode('-', $sqldata);
if($b==NULL) {
$data= substr($wmm[intval($val[1])],0,3).' '.$val[2].' '.$val[0];
} else {
$bd=$val[0].$val[1].$val[2];$dat=date("Ymd",time());
$data=intval(($dat - $bd) / 10000);
}
return $data;
}
|
| |
|
|
|
|
|
|
|
для: olejek
(05.03.2008 в 15:11)
| | впринципе все то же самое:) точность соблюдается до марта, после марта, год округляется:(
mihdan что значит обновите PHP, я же говорю, нет возможности ничего обновить... кривости в скрипте быть не может, т.к я тестирую чисто ваш код: результат: Ваш возраст составляет 38 год или 13943 день, или 334643 часов, или 20078593 минут, или 1204715584 секунд. | |
|
|
|
|
|
|
|
для: _гость_
(05.03.2008 в 14:56)
| | У меня на половине серверов getdate отказывается работать, код что дал вая я работает - проверил на нескольких серверах на разных версиях РНР. Что-то у вас криво ))) Обновите РНР ))) | |
|
|
|
|
|
|
|
для: chexov
(05.03.2008 в 14:56)
| | Замените на этот код, а то там есть ошибки.
А вообще и этот можно оптимизировать.
<?
$birth_day = 28;
$birth_month = 4;
$birth_year = 1983;
$now_year=date('Y');
$now_month=date('n');
$now_day=date('j');
if ($birth_month < $now_month)
$birth=$now_year - $birth_year;
elseif ($birth_month==$now_month)
{
if ($birth_day < $now_day)
$birth = $now_year - $birth_year;
else
$birth = $now_year - $birth_year - 1;
}
else
$birth = $now_year - $birth_year - 1;
?>
|
Вот оптимизированный код:
<?
$birth_day = 28;
$birth_month = 4;
$birth_year = 1983;
$now_year=date('Y');
$now_month=date('n');
$now_day=date('j');
$birth=$now_year - $birth_year;
if (($birth_month==$now_month && $birth_day > $now_day) || $birth_month>$now_month)
$birth -= 1;
?>
|
| |
|
|
|
|
|
|
|
для: olejek
(05.03.2008 в 14:53)
| | ООО!!!! великолепно! все четко работает:) спасибо огромное вам! | |
|
|
|
|
автор: _гость_ (05.03.2008 в 14:56) |
|
|
для: olejek
(05.03.2008 в 14:53)
| | или getdate вам поможет
<?
print_r(getdate(strtotime("1.10.1950")));
print_r(getdate(time()));
|
| |
|
|
|
|
|
|
|
для: chexov
(05.03.2008 в 14:42)
| | Проверьте так, должно работать, хотя этот код требует проверки.
Может кто альтернативный вариант напишет.
<?
$birth_day = 28;
$birth_month = 4;
$birth_year = 1983;
$now_year=date('Y');
$now_month=date('n');
$now_day=date('j');
if ($birth_month < $now_month)
$birth=$now_year - $birth_year;
elseif ($birth_month=$now_month)
{
if ($birth_day < $now_day)
$birth = $now_year - $birth_year;
else
$birth = $now_year - $birth_year - 1;
}
else
{
if ($birth_day < $now_day)
$birth = $now_year - $birth_year;
}
?>
|
А нет, он не правильный, но что-то в этом роде | |
|
|
|
|
|
|
|
для: _гость_
(05.03.2008 в 14:36)
| | и?
результат:
01. 10. 2000
38.201340943683
|
| |
|
|
|
|
автор: _гость_ (05.03.2008 в 14:36) |
|
|
для: chexov
(05.03.2008 в 13:49)
| | наверное всётаки strtotime()
<?
echo strtotime("1.10.2000"), "<br>\n";
echo date('d. m. Y', 970344000) . "<hr>\n";
echo ((time() - strtotime("1.10.1950"))/31557600) . '<hr>' #если не ошибся с колличеством секунд в году
// echo date('Y', time() ) - date('Y', strtotime("1.10.1950")); # неточно
|
| |
|
|
|
|
|
|
|
для: olejek
(05.03.2008 в 14:25)
| | а примерчик покажите:) а то я совсем упарился.... | |
|
|
|
|