1

以下は、時間のリストをレンダリングする FOR ループのコードです。

...etc...
8:45 am
8:50 am
8:55 am
9:00 am
9:05 am
9:10 am
...etc.

これは 5 分間隔で実行されるスクリプトであり、60 で割り切れるため、現在このスクリプトには問題はありません。ただし、その時間間隔を任意の量 (たとえば 9 分) にできるようにする必要があります。 . 私は 次の出力for ($j >= 0; $j <= 55; $j+=5) for ($j >= 0; $j <= 59; $j+=9)望むように変更しようとしました:

...etc...
8:36 am
8:45 am 
8:54 am
9:03 am
9:12 am
9:21 am
...etc

次の 1 時間に繰り越して、上記のように継続してほしい...そして、最初の 1 時間が :00 で始まったことに注目してください...そして、次の 1 時間が :03 で始まったことに注目してください。用語、それが私がやろうとしていることです..ただし、59以下になる前の最後の値までしか出力されず、終了します:つまり

...etc...
8:36 am
8:45 am
8:54 am
---AND STOPS HERE---

以上が反響の様子です。

以下は私のコードです:

$day = date("n/j/y");

            $startTime = date(strtotime($day." $coursetee_open_time_slashed"));
            ///needs to be in "16:00" format
            $endTime = date(strtotime($day." $coursetee_close_time_slashed"));
            ///needs to be in "16:00" format

            $timeDiff = round(($endTime - $startTime)/60/60);

            $startHour = date("G", $startTime);
            $endHour = $startHour + $timeDiff; 

            for ($i=$startHour; $i <= $endHour; $i++)
                {
                    for ($j >= 0; $j <= 55; $j+=5)
                    {
                        $time_pre = $i.":".str_pad($j, 2, '0', STR_PAD_LEFT);
                        $time = ''.$time_pre .' '.$day.'';

                        /////////////////////////////

                        $time_formated_for_cosmetic = date("g:i a", strtotime("$time"));
                        $time_formated_for_mysql = date("Y-m-d H:i:s", strtotime("$time"));
                            if (isset($tee_times_from_mysql[$time])) {
                                $time = '';
                            } else {
                                $time = '<option value="' . $time_formated_for_mysql . '">'.$time_formated_for_cosmetic .'</option>';
                            }
                            echo $time;
                    }

            }
4

2 に答える 2