Reputation: 13
I am facing a problem while printing exact age using php. The years of the age are printing exactly but when it comes to months and days they often goes to negative values.
Here is the snippet of the code and full code is here.
$ag = date('Y') - substr($row11['dob'],6);
$mn = date('m') - substr($row11['dob'],3,2);
$dy = date('d') - substr($row11['dob'],0,2);
Upvotes: 0
Views: 849
Reputation: 892
Your age calculation method is not Right, bcz by separation from today's year to birth year is fine but when it come to month and date it will gives negative value, direct separation will not work for age calculation. Use following code.
function ageCalculator($dob){
if(!empty($dob)){
$birthdate = new DateTime($dob);
$today = new DateTime('today');
$ag = $birthdate->diff($today)->y;
$mn = $birthdate->diff($today)->m;
$dy = $birthdate->diff($today)->d;
return "$ag Years $mn Months $dy Days";
}else{
return 0;
}
}
$row11 = array('dob'=>'02-01-1995');
echo ageCalculator($row11['dob']);
//OUTPUT
22 Years 9 Months 20 Days
Here you can find the file
Upvotes: 1