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";
     }` 

はい、上記のコードは and で宣言されstart_date= 1379437200 = 2013-09-18て い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 に答える