yeah, thats the code i wrote myself (nearly). it gets the job done. thanks "Curt Zirzow" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > * Thus wrote John Ryan ([EMAIL PROTECTED]): > > Hi, > > > hello ryan, > > > In mySQL, I store dates as YYYY-MM-DD, a standard DATE type. It stores users > > date of births. I need to calculate in a PHP script, the users age from this > > DOB. I get a PHP date in the same format as the mySQL and subtract, which > > returns the year rounded off. ie, it doesnt matter if your birthdays in june > > of 1983 and the date is januray 2003, your age is still returned as 20, when > > it should be 19. > > > > Does anyone know how can i get the right age? > > To get a real age of someone you would use seconds, but since the actual > count of seconds get messed up on leap years (through the convertion > from seconds to years), I approached it with the method most people > calculate ages. > > Most people first look at the year and find the differnce, then if > the month/day hasn't come around you subtract one; alas the common > calculation for age. > > Here is the code to demonstrate that logic: > > > $dob = split('-', '1980-12-1'); > $now = split('-', date('Y-m-d')); > > // we are either this age or one less > $age = $now[0] - $dob[0]; > > // have we gotten to the month of in dob? > if ($now[1] < $dob[1]) { > > // no, so we are technically a year less. > $age--; > > // If we're in the month, has the day come yet? > } elseif ($now[1] = $dob[1] && $now[2] < $now[3]) { > > // no, still a few more days. > $age--; > } > > // your age is proper, in day to day usage. > > /* > Note: > > instead of the if () elseif() you can use > if (mktime(0,0,0,$now[1],$now[2]) < mktime(0,0,0,$dob[1],$dob[2])) { > $age--; > } > > */ > > > HTH, > > Curt > -- > "I used to think I was indecisive, but now I'm not so sure."
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php