| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > как получить возраст человека по дате его рождения |
| Автор: kuller 19.4.2010, 02:54 | ||
| Здравствуйте! Вобщем задался целью вычислить возраст человека, зная его дату рождения. Формат даты в БД: 2010-04-18 Ну вот сам написал длинющих код с кучей условий, а потом погуглил и нашел вот какой вариант решения этой проблемы:
$date_b - дата рождения человека Мне не понятна запись: (intval($month.$day)-intval(date("m").date("d"))?1:0), кто то может объяснить??? Заранее спасибо!!! |
| Автор: SickFxck 19.4.2010, 07:33 | ||
Код неправильный. Там пропущено условие "> 0". Переписывается проще:
Разница в возрасте определяется не только годами. $month и $day должны быть с leading zeros. |
| Автор: kuller 19.4.2010, 09:42 |
| SickFxck, Спасибо! Да когда я вчера тестил работу того кода, то не мог понять почему он не правильно вычислял возраст на некоторых случаях. SickFxck, Ваш код работает правильно, но все же хотелось узнать как в том ПЕРВОМ случае происходит обработка того выражения. |
| Автор: kuller 20.4.2010, 11:20 |
| SickFxck, ну по Вашему код я понял, что если условие TRUE, то возвращется 1 (получается, что ДР еще не было) и отнимается от разности: date("Y") - $year, а если ложь, то получается, что ДР уже был и возвращается 0 и возраст вычисляется только разностью годов. SickFxck, правильно я понял??? |
| Автор: azesmcar 20.4.2010, 11:25 | ||
| kuller Если данные хранятся в базе то не вижу смысла писать это на PHP, возраст можно получать из базы SQL запросом. База данных предоставляет удобные функции для работы с датой, зачем делать это на PHP?
это для MySQL. |
| Автор: SickFxck 20.4.2010, 17:16 |
| http://dev.mysql.com/doc/refman/5.0/en/date-calculations.html Добавлено через 6 минут и 14 секунд azesmcar, ты пренебрегаешь високосными годами. То есть в районе самого дня рождения могут быть ошибки. |
| Автор: kuller 21.4.2010, 09:24 | ||
azesmcar, Если често, то я даже не слышал о такой функции получения возраста из БД. azesmcar, спасибо, буду пробывать! |