【问题标题】:php having an issue with my if conditionphp 我的 if 条件有问题
【发布时间】:2018-03-14 04:02:54
【问题描述】:

我的 if 条件似乎有问题。 每当我输入过期超过 31 天的许可证时,它就会进入许可证过期日期大于 31 天的条件,它将给出一个绿色圆圈和绿色文本。 它会将其读取为已过期,并且直到 31 天才会过期,并带有红色和绿色的圆圈和文字。

这是一个sn-p。

$exp = strtotime($exp_date);

$td = strtotime($today_date);

$diff= $td -$exp;

$x = abs(floor($diff/ (60 * 60 * 24)));


$alertdays = ""; //expired

$alertdays1 = ""; //less than 30 days before expiry

$alertdays2 = ""; //more than 30 days




$statusexp = ""; //expired

$status = ""; //less than 30 days
$status1 = ""; //more than 30 days

$daysexp = ""; //days expired


if($td > $exp)
{
$statusexp = '<i class="fa fa-circle" style="font-size:30px; color:red;"></i>';
}


if($diff < 0){
$status = '<i class="fa fa-circle" style="font-size:30px; color:orange;"></i>';
}

if($diff <= 30) {

$alertdays1 = $x. ""; 

}
if($x >= 31){
$alertdays1 = "";
$alertdays2 = $x. "";
$status ='<i class="fa fa-circle" style="font-size:30px; color:green;"></i>'; 
}


if($td > $exp){
$alertdays ="Expired";
$daysexp  = " - " . $x; 
}

Output

【问题讨论】:

  • 请提供一小部分测试用例(每个测试用例两个日期)以及每个测试用例的预期输出。 ...请不要图片。
  • 如果您要有条件地回显一个空字符串,请不要打扰。只需完全删除 else 组件。
  • 这个任务你肯定不需要这么多变量吧?

标签: php date comparison conditional


【解决方案1】:

您的代码的问题是您使用ABS 函数来计算今天和目标日期的差异。如果你用2018-02-01 来测试它,结果应该是-41,但是用ABS你得到41,所以你的代码给出了“绿色”的结果。

【讨论】:

    【解决方案2】:

    你可以创建函数

    例如:

    <?php
    function Mehrdad_Diff_Alldate($startTime) {
    $start_date = new DateTime($startTime);
    $endTime = date("Y-m-d H:i:s");
    $since_start = $start_date->diff(new DateTime($endTime));
    $text=$since_start->y.'|'.$since_start->m.'|'.$since_start->days.'|'.$since_start->h.'|'.$since_start->i.'|'.$since_start->s.'|';
    return $text;   
    }
    
    $td =  date("Y-m-d H:i:s");
    $exp="2007-08-12 13:10:56";
    $exps = Mehrdad_Diff_Alldate($exp);
    $explode=explode("|",$exps);
    $year=$explode[0];
    $month=$explode[1];
    $day=$explode[2];
    $hours=$explode[3];
    $mintue=$explode[4];
    $second=$explode[5];
    ?>
    

    现在您可以使用 $day 尽量不要分开这些术语

    例如:

    <?php
    if($td > $exp){
    
    }else if($day < 0){
    
    }else if($day <= 30) {
    
    }else if($day >= 31){
    
    }else if($td > $exp){
    
    }else{
    
    }
    ?>
    

    【讨论】:

    • 成功了,先生。非常感谢您!!你能解释一下我的错误以便我复习吗?
    猜你喜欢
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多