php - 循环更改时间增量,不能被 60 整除时结转到下一个小时

标签 php mysql loops for-loop

下面是用于呈现时间列表的 FOR 循环的代码:

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

这是一个以五分钟为间隔运行的脚本,目前该脚本没有问题,因为它可以被 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

我希望它延续到下一个小时并像上面一样继续...注意第一个小时是如何从 :00 开始的....以及下一个小时是如何从 :03 开始​​的,因为 54 加 9 是 03以小时计算,这就是我想要做的.. 但是,它只输出小于或等于 59 之前的最后一个值,然后退出:即

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

上面是它的 echo 。

下面是我的代码:

$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;
                    }

            }

最佳答案

$increment = 9;
$j = 0;
for ($i=$startHour; $i <= $endHour; $i++)
{
    for (; $j < 60; $j += $increment) // $j initialized outside of loop
    {
         // ...
    }
    $j -= 60; // Get start minute for next hour
}

关于php - 循环更改时间增量,不能被 60 整除时结转到下一个小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16969151/

相关文章:

php PDO fetchAll(),简单的结果

php - 如何使用 mysql 和 php 选择多行?

php - 比较数组中的元素并循环遍历每个 php

javascript - For 循环从每个嵌套数组中获取一个变量

python - 如何从 MYSQL DB 中仅捕获新记录

MYSQL - 想要迭代位于 1 个表中的日期,并计算另一个表中的记录数

PHP 标题取决于变量

php - Symfony 无法访问空变量上的属性 ("nameArticle")

php - sql LIKE 有一定的限制

javascript 将冒号附加到变量