2013-05-14 248 views
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; ?> 

到目前爲止,它表明,如果證書已經過期,但它並沒有說明其他證書的正確到期。任何人都可以指出我正確的方向,因爲這個問題正在殺死我。謝謝!

回答

1

看一看DateTime::diff,讓您的間隔時間,格式是那麼簡單

+0

,完美的工作,謝謝! – Pooshonk 2013-05-14 15:36:43

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') 
相關問題