php 我的 if 条件有问题
php having an issue with my if condition
我的 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
你可以创建函数
例如:
<?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{
}
?>
你的代码的问题是你使用 ABS
函数来计算今天和目标日期的差异。如果你使用 2018-02-01
来测试它,结果应该是 -41,但是使用 ABS 你得到 41,所以你的代码给出 "green" 结果。
我的 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
你可以创建函数
例如:
<?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{
}
?>
你的代码的问题是你使用 ABS
函数来计算今天和目标日期的差异。如果你使用 2018-02-01
来测试它,结果应该是 -41,但是使用 ABS 你得到 41,所以你的代码给出 "green" 结果。