2

午前 9 時から午後 9 時までの時間のリストを表形式で 30 分間隔で作成したいと思います。イベントが予定されている間隔ごとに、セルを赤にして、部屋が空いている間隔については緑にしたいと思います。

これまで、部屋が使用されている時間しかリストできませんでしたが、緑色のボックスに使用可能な時間を記入する必要があります。これまでの私のコードは次のとおりです。:

foreach ($events[$event_day] as $event) {

    $meetstatus = $event['status'];
    $start = $event['time1'];
    $end = $event['time2'];

    $tStart = strtotime($start);
    $tEnd = strtotime($end);
    $tNow = $tStart;
    if ($event['roomchoice'] == 'Meeting Room') {
        while ($tNow <= $tEnd) {
            $time = date("H:iA", $tNow) . "\n";
            $calendar .= '<tr><td class="meeting-' . $meetstatus . '">' . $time . '</td></tr>';
            $tNow = strtotime('+30 minutes', $tNow);
        }
    }
}
4

1 に答える 1

0

イベントよりも間隔が長くなる可能性があることを理解しました。これが当てはまる場合、外側のループはイベントではなく間隔で実行する必要があります。

$strintervalstarts=array('9:00','9:30',...)
foreach ($strintervalstarts as $strintervalstart) {
  $intervalstart=strtotime($strintervalstart);
  $intervalend=...

...コードに置き換える必要があります

そこからは簡単だと思います。ただし、さらにいくつかのヒントが必要になる場合があります。

  • http://php.net/manual/de/function.date-add.php (日付、間隔を計算するための maketimeend)
  • 色分けが「このイベントは完全に間隔内にある」または「イベントが間隔に触れているが、それを超えている (部分的な重複)」に関するものであるかどうかを自分で定義する必要があります。
  • > あなたの決定によれば、$tStart を $intervalstart に、$tEnd を $intervalend に関連付ける if が必要です。
于 2013-10-02T09:41:11.147 に答える