I’m looking for a way to calculate the age of a person, given their DOB in the format dd/mm/yyyy.
I was using the following function which worked fine for several months until some kind of glitch caused the while loop to never end and grind the entire site to a halt. Since there are almost 100,000 DOBs going through this function several times a day, it’s hard to pin down what was causing this.
Does anyone have a more reliable way of calculating the age?
//replace / with - so strtotime works $dob = strtotime(str_replace("/","-",$birthdayDate)); $tdate = time(); $age = 0; while( $tdate > $dob = strtotime('+1 year', $dob)) { ++$age; } return $age;
EDIT: this function seems to work OK some of the time, but returns “40” for a DOB of 14/09/1986
return floor((time() - strtotime($birthdayDate))/31556926);
Advertisement
Answer
This works fine.
<?php //date in mm/dd/yyyy format; or it can be in other formats as well $birthDate = "12/17/1983"; //explode the date to get month, day and year $birthDate = explode("/", $birthDate); //get age from date or birthdate $age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md") ? ((date("Y") - $birthDate[2]) - 1) : (date("Y") - $birthDate[2])); echo "Age is:" . $age; ?>