php日期和if语句

时间:2013-09-09 22:54:47

标签: php date comparison

所以,我正在努力从数据库中获取付款日期,然后在其到期日添加一年。我希望用户在登录时知道他们是处于活动状态还是非活动状态。

但是,每次我与付款尚未过期的人登录时,我都会收到您的非活动会员消息。有人可以看一看,看看我哪里错了吗?

$paymentdate = strtotime($row[1]);
$paymentexpire = strtotime("+1 year", $paymentdate);
$currentdate = date('Y-m-d');
if($paymentdate != null && $paymentdate <= $currentdate && $currentdate < $paymentexpire){
    $msg = $p->addContent("You are an active member<br>");
}
else{
    $msg = $p->addContent("You are an inactive member<br>");
}

1 个答案:

答案 0 :(得分:1)

有关PHP小提琴示例,请参阅http://phpfiddle.org/main/code/ips-jgh

这是一个简化版本,更有意义。如果成员资格的到期日期大于/等于当前时间,则成员资格尚未用完 - 活跃。

$paymentdate = strtotime($row[1]);
$paymentexpire = strtotime("+1 year", $paymentdate);

if($paymentdate != null && $paymentexpire >= time()){
    $msg = $p->addContent("You are an active member<br>");
}
else {
    $msg = $p->addContent("You are an inactive member<br>");
}

您可以将日期转换简化为:

$paymentexpire = strtotime("+1 year", strtotime($row[1]));

您修改了答案,以字符串格式包含当前时间。上面的代码只使用易于理解和比较的unix时间戳。

我修改了你的示例代码,它在我的机器上运行正常。

<?php

$date = "2012-10-10"; // member is active

$paymentdate = strtotime($date);
$paymentexpire = strtotime("+1 year", $paymentdate);

if($paymentdate != null && $paymentexpire >= time()){
   echo "You are an active member<br>";
}
else {
   echo "You are an inactive member<br>";
}

?>