0

我在数据库中有 2 个字段来关联我的工作(start_daterepeat_nb)。关于如何按日期提醒颜色的老问题, 我完成了类似`

     date_default_timezone_set('Asia/Phnom_Penh');
     $today = date('Y-m-d');
     /**** This is just simple to show in browser to see data but not what to need********/
     $current = strtotime($today);
     echo "<br /><br />";
     echo 'CURRENT_DATE: '. ($today) ."\n";
     echo "<br /><br />";
     $start =1379437200;
     echo 'Start date: '. date('Y-m-d', $start) ."\n";
     echo '<br/>';
     echo '<br/>';
     /****it is just for get values of date that pass by values $date******/
     $date = '2013-09-18';
     echo 'Convert: '.$Convert = strtotime($date);
     echo "<br />";
     echo 'DisConvert: '.date('Y-m-d', $Convert);
     /**** start code for procees*****/
     echo "<br /><br /><br /><br /><br />";
     $answer = ($current)-($start);
     echo "<br />";
     if(((($answer/24)/60)/60)==30){
         echo "red";
         exit();
     }
     elseif(((($answer/24)/60)/60) >=24 && ((($answer/24)/60)/60)<29 ){
         echo "yellow";
         exit();
     }
     elseif(((($answer/24)/60)/60) >= 20 && ((($answer/24)/60)/60)<29){
         echo "green";
         exit();
     }
     else{
          echo "nothing";
     }` 

是 上面的代码是由start_date= 1379437200 = 2013-09-18and 声明的repeat_nb = 30 day

我的问题:颜色已经按我需要的日期发出警报,但是当我在屏幕上以任何颜色显示很多日期时,我想将其缩短,以将绿色与绿色分组,并且这些颜色末尾附近的哪些数据显示在上方。(EX: green color have 7 row but some row is just start and some row is near change to yellow) .

注意:repeat_nb此代码只有30天,但实际上它可以由用户设置为10 天、30 天、3 个月、6 个月、...。

请给我一些想法。我期待尽快看到您的回复。

4

1 回答 1

0

这是将根据间隔返回颜色的函数:

使用示例:

echo getColor('2013-09-30'); # green
echo getColor('2013-09-20'); # yellow
echo getColor('2013-09-01'); # red
echo getColor('2013-08-15'); # nothing

代码:

function getColor($date) {
    $now = new DateTime('today');
    $date = new DateTime($date);
    $colors = array(
        '-7 day'   => 'green',
        '-20 day'  => 'yellow',
        '-1 month' => 'red',
    );
    foreach ($colors as $modify => $color) {
        $copy = clone $now;
        $copy->modify($modify);
        if ($copy <= $date) return $color;
    }
    return 'nothing';
}
于 2013-10-01T07:53:25.723 回答