下面是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
我想让它延续到下一个小时,像上面那样继续…注意第一个小时是如何以:00....开头的下一个小时是怎么开始的,因为54加9按小时计算就是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;
}
}
$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
}
可以在for循环中使用时间戳:
$day = date("n/j/y");
$coursetee_open_time_slashed = "16:00";
$coursetee_close_time_slashed = "18:00";
$startTime = strtotime($day." $coursetee_open_time_slashed"); // timestamp
// needs to be in "16:00" format
$endTime = strtotime($day." $coursetee_close_time_slashed"); // timestamp
// needs to be in "16:00" format
for ($time = $startTime; $time < $endTime; $time += 60 * 5) {
echo date("Y-m-d H:i:s", $time) . "'n";
}