Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вычисление возраста

Сообщения:  [1-10]    [11-20]  [21-26] 

 
 автор: kis-kis   (07.03.2008 в 11:16)   письмо автору
 
   для: 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; 
}

   
 
 автор: chexov   (05.03.2008 в 17:50)   письмо автору
 
   для: olejek   (05.03.2008 в 15:11)
 

впринципе все то же самое:) точность соблюдается до марта, после марта, год округляется:(
mihdan что значит обновите PHP, я же говорю, нет возможности ничего обновить... кривости в скрипте быть не может, т.к я тестирую чисто ваш код: результат: Ваш возраст составляет 38 год или 13943 день, или 334643 часов, или 20078593 минут, или 1204715584 секунд.

   
 
 автор: mihdan   (05.03.2008 в 17:26)   письмо автору
 
   для: _гость_   (05.03.2008 в 14:56)
 

У меня на половине серверов getdate отказывается работать, код что дал вая я работает - проверил на нескольких серверах на разных версиях РНР. Что-то у вас криво ))) Обновите РНР )))

   
 
 автор: olejek   (05.03.2008 в 15:11)   письмо автору
 
   для: 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;
?>

   
 
 автор: chexov   (05.03.2008 в 14:56)   письмо автору
 
   для: 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()));

   
 
 автор: olejek   (05.03.2008 в 14:53)   письмо автору
 
   для: 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;
    }
?>

А нет, он не правильный, но что-то в этом роде

   
 
 автор: chexov   (05.03.2008 в 14:42)   письмо автору
 
   для: _гость_   (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")); # неточно

   
 
 автор: chexov   (05.03.2008 в 14:27)   письмо автору
 
   для: olejek   (05.03.2008 в 14:25)
 

а примерчик покажите:) а то я совсем упарился....

   

Сообщения:  [1-10]    [11-20]  [21-26] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования