php - 比较时间戳日期以确保用户的年龄最小化

时间:2012-03-24 17:17:07

标签: php date timestamp

  

可能重复:
  How to calculate the difference between two dates using PHP?

当用户注册时,系统必须检查他们是否已经足够老了,在这个例子中他们必须至少8岁

$minAge = strtotime(date("d")."-".date("m")."-".(date("Y")-8));
$dob = strtotime($day."-".$month."-".$year);

$ minAge = 01-03-2004,$ dob = 01-02-2011

我基本上需要确保这个人在2004年之前出生,但我想知道我是否必须转换时间戳来进行比较,或者是否有更有效的方法。

感谢任何帮助,谢谢

3 个答案:

答案 0 :(得分:0)

使用$ dob时间戳,您可以从当前日期的时间戳中减去该值,然后将这些值与您的minAge进行平衡。例如:

if(($dob-time())=>$minAge) {
   //OVER 8 YEARS
} else {
   //UNDER 8
}

尽管如此,使用此方法您将minage作为时间戳进行比较而没有天,小时,分钟或秒,因此在使用“time()”值时请记住这一点,如本示例所述。

答案 1 :(得分:0)

我认为你只需要这样做:

$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
}

答案 2 :(得分:0)

使用PHP 5,您可以使用DateTime类来处理这类事情:

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 ' );