Possible Duplicate:
How to calculate the difference between two dates using PHP?
When a user signs up the system has to check that they are old enough to do so, in this example they have to be atleast 8 years old
$minAge = strtotime(date("d")."-".date("m")."-".(date("Y")-8));
$dob = strtotime($day."-".$month."-".$year);
$minAge = 01-03-2004, $dob = 01-02-2011
I basically need to make sure this person was born before 2004 but I want to know whether I have to convert the timestamps to do a comparison or whether there is a more efficient way.
Any help is appreciated, thank you
With your $dob timestamp, you can subtract that from the current date's timestamp, and then balance those values versus your minAge. ex:
if(($dob-time())=>$minAge) {
//OVER 8 YEARS
} else {
//UNDER 8
}
Although, with this method you are comparing minage as a timestamp without days, hours, minutes or seconds, so keep that in mind when using the "time()" value as described in this example.
I think you just need to do something like this:
$dob = strtotime('1-1-2012');
$minAge = (60*60*24*365*8);//number of seconds of 8 years
if(time()-$dob>= $minAge)
{
//OK
}
else
{
//NOT OK
}
With PHP 5 you can use DateTime
class for this kind of things:
function allowed_to_watch_adult_movies($birthday) {
$min_age = 18;
$user = new DateTime($birthday);
$min_birthday = new DateTime('now - '.$min_age.' years');
$interval = date_diff($min_birthday, $user);
return $interval->invert == 1;
}
printf('Kid is %sallowed to watch adult movies<br />' ,
allowed_to_watch_adult_movies('2004-05-18') ? '' : 'not ' );
printf('Grandpa is %sallowed to watch adult movies, but he does not care<br />' ,
allowed_to_watch_adult_movies('1954-05-12') ? '' : 'not ' );