Возможный дубликат:
Рассчитать годы с даты
Здравствуй,
У меня есть таблица с полем, обозначающим день рождения. Как узнать возраст человека с этой даты?
Это то, что у меня есть.
$qPersoonsgegevens = "SELECT * FROM alg_persoonsgegevens WHERE alg_persoonsgegevens_leerling_ID = $leerling_id"; $rPersoonsgegevens = mysql_query($qPersoonsgegevens); $aPersoonsgegevens = mysql_fetch_assoc( $rPersoonsgegevens ); $timeBirthdate = mktime($aPersoonsgegevens['alg_persoonsgegevens_geboortedatum']);
К сожалению, я не знаю, как исходить из этого момента, чтобы получить возраст.
Буду признателен за любую оказанную помощь.
Matthy
Это было задано раньше. Попробуй это:
function getAge($then) { $then = date('Ymd', strtotime($then)); $diff = date('Ymd') - $then; return substr($diff, 0, -4); }
Назовите это так:
$age = getAge($aPersoonsgegevens['alg_persoonsgegevens_geboortedatum']);
Может быть полезно помнить, что некоторые культуры начинают считать ваш возраст от зачатия или начинать считать в возрасте 1 года на момент рождения. В частности, вам нужно быть осторожным с корейским рынком, когда вы делаете расчет возраста.
Я сомневаюсь, что автору вопроса нужна эта информация, но я просто хотел ее выкрикнуть, так как это могло быть полезно программисту где-то и в какой-то момент.
Я написал приложение, которое отображает возраст для младенцев (до 24 месяцев) в месяцах или днях (для детей младше 1 месяца):
public function getAge () { if ($this->getBirthDate() === null) { return null; } if (! $this->getAdmitTime() == null ) { $relative_to = $this->getAdmitTime(null); # null format returns Unix ts } else { $relative_to = time(); # Unix ts } $age_in_seconds = $relative_to - $this->getBirthDate(null); $age_in_years = intval($age_in_seconds / (60*60*24*365.25)); if ($age_in_years >= 2) { return $age_in_years; } else { $age_in_months = intval($age_in_seconds / (60*60*24*30)); if ($age_in_months >= 1) { return "$age_in_months month". ($age_in_months == 1 ? '' : 's'); } else { $age_in_days = intval($age_in_seconds / (60*60*24)); return "$age_in_days day" . ($age_in_days == 1 ? '' : 's'); } } }
Таким образом, у вас могут быть такие человеко-читаемые возрастные значения: