Как легко определить возраст от дня рождения? (php)

Возможный дубликат:
Рассчитать годы с даты

Здравствуй,

У меня есть таблица с полем, обозначающим день рождения. Как узнать возраст человека с этой даты?

Это то, что у меня есть.

$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'); } } } 

Таким образом, у вас могут быть такие человеко-читаемые возрастные значения:

  • 21
  • 3
  • 17 месяцев
  • 3 дня