Create an interval collection of times between 8:00 am and 5:00 pm in 30 minute intervals
$timeStep = 30
$start = '08:00:00'
$end = '17:00:00'
$intervals = CarbonInterval::minutes($timeStep)->toPeriod($start, $end);
Use the interval collection
foreach ($intervals as $date) {
dump($date->format('H:i'))
}