PHP - 自动计算laravel中的时间间隔

时间:2018-05-23 12:41:54

标签: php

我的表start_timeend_timeinterval中有三列。

start_timeend_time分别存储时间22:0024:00以及interval存储时间,如00:15:00

我想要做的是自动计算22:00 - 22:1522:15 - 22:30等区间,直到23:45 - 24:00为止。

如果interval00:30:00,则时间间隔应为22:00 - 22:30

我是laravel和stackoverflow的新手,很抱歉给您带来不便。

2 个答案:

答案 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);

https://3v4l.org/I2lUS

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
)