我必须写一个应该在两次之间开始和结束的循环。我知道有很多方法可以让这只猫变老,但我希望看到一个真正的程序员接近这个功能。
例如,基本上我星期三在下午6点开放,晚上10:30关闭。
我正在寻找一个循环,它会在15分钟的间隔内为我提供一张表格,其中包含两者之间的所有时间。
所以,我基本上想要构建一个每列
的列表6:00pm
6:15pm
7:15pm
等...
我提供此功能的两个变量是开放时间和关闭时间。 现在不要指责我“为我写代码”的帖子。我很乐意根据您的要求为您提供我的黑客解决方案,我只是想看看有真正经验的人会如何创建这个功能。
谢谢:)
答案 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)));
}