我的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;
}
答案 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;结果