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

Reply via email to