我的表start_time
,end_time
和interval
中有三列。
start_time
和end_time
分别存储时间22:00
和24:00
以及interval
存储时间,如00:15:00
。
我想要做的是自动计算22:00 - 22:15
,22:15 - 22:30
等区间,直到23:45 - 24:00
为止。
如果interval
为00:30:00
,则时间间隔应为22:00 - 22:30
。
我是laravel和stackoverflow的新手,很抱歉给您带来不便。
答案 0 :(得分:0)
你可以和strtotime一起使用for循环。
$start= "20:00";
$end = "22:00";
$int = 15;
$int *= 60;
$start = strtotime($start);
$end = strtotime($end);
for($i = $start; $i < $end;){
$res[] = date("H:i", $i) . "-" . date("H:i", $i + $int);
$i += $int;
}
var_dump($res);
EDIT;没有注意到你想要一个不同的输出
答案 1 :(得分:0)
<?php
$begin = new DateTimeImmutable('19:00');
$end = new DateTimeImmutable('24:30'); // Last 30 min will not be inclued (see output)
$interval = new DateInterval('PT30M'); // Interval 30 min
$daterange = new DatePeriod($begin, $interval ,$end);
$ranges = [];
foreach ($daterange as $key => $range) {
$ranges[$key] = $range->format('H:i');
if($key>0) {
$ranges[$key-1] .= ' - '.$range->format('H:i');
}
}
array_pop($ranges);
print_r($ranges);
输出:
Array
(
[0] => 19:00 - 19:30
[1] => 19:30 - 20:00
[2] => 20:00 - 20:30
[3] => 20:30 - 21:00
[4] => 21:00 - 21:30
[5] => 21:30 - 22:00
[6] => 22:00 - 22:30
[7] => 22:30 - 23:00
[8] => 23:00 - 23:30
[9] => 23:30 - 00:00
)