0

我有一个有有效期的证书列表。我试图根据离到期日的距离显示不同的颜色。如果它在 30 天内到期(或已经到期),我需要显示红色,如果日期在 60 到 30 天之间,我需要显示为琥珀色,如果超过 60 天,我需要显示绿色。到目前为止,我才开始研究 +30 天的部分。到目前为止,我有以下

<?php foreach($company_certificates as $certificates): 
$startdate = date('d-m-Y');
$onemonth = date('d-m-Y', strtotime('+30 days')); 
?>

<tr>
    <td><?php echo $certificates->username ?></td>
    <td><?php echo $certificates->certificate ?></td>
    <td><?php echo $certificates->expiry_date ?></td>
    <td><?php 
    //$onemonth = date($certificates->expiry_date, strtotime('-30 days'));
    if ($date >= $certificates->expiry_date)
    {
        $expiry = '2'; //expired
    }
    else
    {
        if($certificates->expiry_date > $onemonth && $startdate < $certificates->expiry_date) 
        {
            $expiry = '1';
            //echo"1 month";
        }
        else
        {
            $expiry = '0'; 
        }
    }
    echo '<img src="' . $this->config->base_url('assets/images/expiry_' . $expiry . '.png') . ' "/>';?></td></tr>
<?php endforeach; ?>

到目前为止,它显示证书是否已过期,但未显示其他证书的正确过期。谁能指出我正确的方向,因为这个问题正在杀死我。谢谢!

4

2 回答 2

1

看看DateTime::diff得到你的间隔,然后格式化很简单

于 2013-05-14T15:30:37.687 回答
1
function getExpireColor($expireDate){
    $today = strtotime(date("Y-m-d"));
    $exp = strtotime($expireDate);
    // convert the difference to days
    $days = ($exp - $today)/(3600*24);
    if ($days < 30) return "red";
    if ($days < 60) return "amber";
    return "green";
}

调用只是

$this->config->base_url('assets/images/expiry_' . getExpireColor($expiry) . '.png')
于 2013-05-14T15:43:15.007 回答