检查日期是否在多个日期范围内

检查日期是否在多个日期范围内

问题描述:

我有一个有效期限的证书列表。我试图根据它们距离期限有多远显示不同的颜色。如果在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; ?> 

到目前为止,它表明,如果证书已经过期,但它并没有说明其他证书的正确到期。任何人都可以指出我正确的方向,因为这个问题正在杀死我。谢谢!

看一看DateTime::diff,让您的间隔时间,格式是那么简单

+0

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

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')