用PHP填补两次之间的空白

时间:2011-08-18 18:41:27

标签: php loops

我必须写一个应该在两次之间开始和结束的循环。我知道有很多方法可以让这只猫变老,但我希望看到一个真正的程序员接近这个功能。

例如,基本上我星期三在下午6点开放,晚上10:30关闭。

我正在寻找一个循环,它会在15分钟的间隔内为我提供一张表格,其中包含两者之间的所有时间。

所以,我基本上想要构建一个每列

的列表
6:00pm
6:15pm
7:15pm

等...

我提供此功能的两个变量是开放时间和关闭时间。 现在不要指责我“为我写代码”的帖子。我很乐意根据您的要求为您提供我的黑客解决方案,我只是想看看有真正经验的人会如何创建这个功能。

谢谢:)

5 个答案:

答案 0 :(得分:4)

$start = new DateTime("2011-08-18 18:00:00");
$end = new DateTime("2011-08-18 22:30:00");
$current = clone $start;
while ($current <= $end) {
    echo $current->format("g:ia"), "\n";
    $current->modify("+15 minutes");
}

在键盘上试用:http://codepad.org/JwBDOQQE

答案 1 :(得分:3)

PHP 5.3为此专门引入了一个类DatePeriod

$start    = new DateTime("6:00pm");
$end      = new DateTime("10:30pm");
$interval = new DateInterval('PT15M');
$period   = new DatePeriod($start, $interval, $end);

foreach ($period as $time) {
    echo $time->format('g:ia'), PHP_EOL;
}

echo $end->format('g:ia'); // end time is not part of the period

答案 2 :(得分:0)

$start = strtotime('2011-08-11 18:00:00');

for ($i = 0; $i < 20; $i++) {
   echo date('g:ia', $start + ($i * (15 * 60))), '<br>';
}

答案 3 :(得分:0)

只要当前时间低于结束时间,我就会使用DateTime函数和increase the time by 15 minutes每次循环转。

编辑:正如user576875已发布

答案 4 :(得分:0)

$start_date = '2019-07-30 08:00:00';
$end_date = '2019-09-31 08:00:00';
while (strtotime($start_date) <= strtotime($end_date)) {
    echo "$start_date<br>";


    $start_date = date ("Y-m-d H:i:s", strtotime("+1 hours", strtotime($start_date)));
}