php有我的if条件的问题

时间:2018-03-14 04:02:55

标签: php date comparison conditional

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

这是一个片段。

$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

2 个答案:

答案 0 :(得分:0)

你可以创建功能

例如:

<?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{

}
?>

答案 1 :(得分:0)

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