Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Функция для расчёта возраста в PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Простенький скриптик вполне удобный в эксплуатации для расчёт возраста.
Friendly Man
Отправлено: 21 Марта, 2010 - 14:42:56
Post Id



Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Апр. 2009  
Откуда: Россия - Армения, Москва-Ереван


Помог: 0 раз(а)




Если Вам нужно расщитать возраст пользователя или ещё кого нибудь Вам сюда:
Жду комментариев, нарицаний и похвал Улыбка

PHP:
скопировать код в буфер обмена
  1.  
  2. //Функция для расчёта возраста 20.03.2010
  3. // Begin function
  4. function  age($day,$month,$year) {
  5.     if (is_integer($day) && is_integer($month) && is_integer($year)){
  6.         $month_age=date("m")-$month;
  7.         if($month_age < 0){
  8.           $year_age=(date("Y")-$year)-1;
  9.         }
  10.         elseif ($month_age == 0) {
  11.           $day_age=date("d")-$day;
  12.           if($day_age >= 0) {
  13.             $year_age=date("Y")-$year;  
  14.           }
  15.           else {$year_age=(date("Y")-$year)-1;}
  16.         }
  17.         else {$year_age=date("Y")-$year;}
  18.         $age=&$year_age;
  19.         return $age;
  20.     }
  21.     else {return $report="неверный формат данных.";}        
  22. }
  23. // End function
  24.  

(Отредактировано автором: 21 Марта, 2010 - 14:44:05)



-----
ПОТЕРЯВ_СТРАХ_К_СМЕРТИ_МЫ_ОБРЕТАЕМ_ВЕЧНУЮ_ЖИЗНЬ... и голову без мозгов))))
 
My status
 Top
Champion Супермодератор
Отправлено: 21 Марта, 2010 - 14:50:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




(int) ((time() - mktime(0,0,0, $m, $d, $y)) / (60 * 60 * 24 * 365.25) думаешь сильно хуже?
 
 Top
kochan10
Отправлено: 21 Марта, 2010 - 14:52:13
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




классно))
вот бы она ещё и месяцы с днями считала;)
а так всё норм. автор-молодец.плюсанул бы))
 
 Top
Friendly Man
Отправлено: 21 Марта, 2010 - 14:52:18
Post Id



Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Апр. 2009  
Откуда: Россия - Армения, Москва-Ереван


Помог: 0 раз(а)




Champion пишет:
(int) ((time() - mktime(0,0,0, $m, $d, $y)) / 365.25) думаешь сильно хуже?


А можешь прокомментировать?


-----
ПОТЕРЯВ_СТРАХ_К_СМЕРТИ_МЫ_ОБРЕТАЕМ_ВЕЧНУЮ_ЖИЗНЬ... и голову без мозгов))))
 
My status
 Top
kochan10
Отправлено: 21 Марта, 2010 - 14:54:40
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Champion пишет:
(int) ((time() - mktime(0,0,0, $m, $d, $y)) / 365.25) думаешь сильно хуже?


не очень работает. не правильно выдал
 
 Top
Friendly Man
Отправлено: 21 Марта, 2010 - 14:55:59
Post Id



Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Апр. 2009  
Откуда: Россия - Армения, Москва-Ереван


Помог: 0 раз(а)




Friendly Man пишет:
Champion пишет:
(int) ((time() - mktime(0,0,0, $m, $d, $y)) / 365.25) думаешь сильно хуже?


А можешь прокомментировать?


Думаю это не сложно.


-----
ПОТЕРЯВ_СТРАХ_К_СМЕРТИ_МЫ_ОБРЕТАЕМ_ВЕЧНУЮ_ЖИЗНЬ... и голову без мозгов))))
 
My status
 Top
kochan10
Отправлено: 21 Марта, 2010 - 14:57:43
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




Friendly Man пишет:
Champion пишет:
(int) ((time() - mktime(0,0,0, $m, $d, $y)) / 365.25) думаешь сильно хуже?


А можешь прокомментировать?


текущее время минус дата рождения делить на кол-во дней в году с учётом високосных. верно?
 
 Top
Champion Супермодератор
Отправлено: 21 Марта, 2010 - 14:59:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Friendly Man пишет:
А можешь прокомментировать?
Я исправил. Поделить на всё остальное забыл.
time() - время (unixtime) в секундах, которое сейчас.
mktime(...) - время в секундах в дату рождения
Находим разницу в секундах, переводим в годы, отбрасываем дробную часть.
 
 Top
Friendly Man
Отправлено: 21 Марта, 2010 - 15:00:56
Post Id



Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Апр. 2009  
Откуда: Россия - Армения, Москва-Ереван


Помог: 0 раз(а)




kochan10 пишет:
Friendly Man пишет:
Champion пишет:
(int) ((time() - mktime(0,0,0, $m, $d, $y)) / 365.25) думаешь сильно хуже?


А можешь прокомментировать?


текущее время минус дата рождения делить на кол-во дней в году с учётом високосных. верно?


Не совсем вижу смысл указания точного времени рождения. По причине нецелесообразностиУлыбка Зачем указывать время?


-----
ПОТЕРЯВ_СТРАХ_К_СМЕРТИ_МЫ_ОБРЕТАЕМ_ВЕЧНУЮ_ЖИЗНЬ... и голову без мозгов))))
 
My status
 Top
Champion Супермодератор
Отправлено: 21 Марта, 2010 - 15:04:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Там нет точного времени: часы, минуты, секунды стоят по нулям. Но если очень хочется, можно их указать.
 
 Top
Friendly Man
Отправлено: 21 Марта, 2010 - 15:05:42
Post Id



Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Апр. 2009  
Откуда: Россия - Армения, Москва-Ереван


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. echo (int) ((time() - mktime(0,0,0, 05, 12, 1983)) / 365.25);
  3.  

выдал результат - 2335146 - где тут возраст?

Не хочу кидать камни в огород но у меня более всё конкретнее. Указал дату получил тупо возраст. Хотя скрипт предложенный Вами тоже не решён смысла. Надо просто довести до конца.

(Отредактировано автором: 21 Марта, 2010 - 15:08:12)



-----
ПОТЕРЯВ_СТРАХ_К_СМЕРТИ_МЫ_ОБРЕТАЕМ_ВЕЧНУЮ_ЖИЗНЬ... и голову без мозгов))))
 
My status
 Top
kochan10
Отправлено: 21 Марта, 2010 - 15:06:56
Post Id


Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Дек. 2009  


Помог: 0 раз(а)




в принципе классно)) одной строкой проще чем функцией. но всё равно функция тоже хорошо. молодец автор. а для чемпиона это раз плюнуть)))
(Добавление)
Friendly Man пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. echo (int) ((time() - mktime(0,0,0, 05, 12, 1983)) / 365.25);
  3.  

выдал результат - 2335146 - где тут возраст?


тебе же говорят, бери исправленную функцию. чемпион поправил её уже. гляди его пос первый
 
 Top
Friendly Man
Отправлено: 21 Марта, 2010 - 15:27:38
Post Id



Новичок


Покинул форум
Сообщений всего: 47
Дата рег-ции: Апр. 2009  
Откуда: Россия - Армения, Москва-Ереван


Помог: 0 раз(а)




kochan10 пишет:
в принципе классно)) одной строкой проще чем функцией. но всё равно функция тоже хорошо. молодец автор. а для чемпиона это раз плюнуть)))
(Добавление)
Friendly Man пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. echo (int) ((time() - mktime(0,0,0, 05, 12, 1983)) / 365.25);
  3.  

выдал результат - 2335146 - где тут возраст?


тебе же говорят, бери исправленную функцию. чемпион поправил её уже. гляди его пос первый


(60 * 60 * 24 * 365.25) - а это что значит?
(Добавление)
Champion приятель попробуй в свой вариант вставить дату 1919 и посмотри на результат.


-----
ПОТЕРЯВ_СТРАХ_К_СМЕРТИ_МЫ_ОБРЕТАЕМ_ВЕЧНУЮ_ЖИЗНЬ... и голову без мозгов))))
 
My status
 Top
Champion Супермодератор
Отправлено: 21 Марта, 2010 - 16:01:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Friendly Man пишет:
Champion приятель попробуй в свой вариант вставить дату 1919 и посмотри на результат.
Ну нормально всё) И 1903 нормально. Если тебе надо 1700й год, тогда mktime конечно вернет false, но на такие случаи одна строчка кода превратится в 3.
Friendly Man пишет:
(60 * 60 * 24 * 365.25)
секудны в год превращаются.
 
 Top
jfr
Отправлено: 21 Марта, 2010 - 18:31:44
Post Id



Посетитель


Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010  
Откуда: Таджикистан, Худжанд


Помог: 0 раз(а)

[+]


вот таким образом тоже можно:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function age($day,$month,$year)
  3. {
  4. $current_day=date('d',time());
  5. $current_month=date('n',time());
  6. $current_year=date('Y',time());
  7.  
  8. if ($current_month>$month or $current_month==$month && $current_day>=$day)
  9. {$age=$current_year-$year;}
  10. else {$age=$current_year-$year-1;}
  11. echo $age;
  12. }
  13. age(26,08,1985);
  14. ?>

(Отредактировано автором: 21 Марта, 2010 - 18:34:10)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB