addDays(2); $dateRange = CarbonPeriod::create($startDate, $endDate); $dates = []; foreach ($dateRange as $dateKey => $date) { $dates[$dateKey]['date'] = $date->format('Y-m-d'); $dates[$dateKey]['week'] = $date->localeDayOfWeek; $dates[$dateKey]['subdate'] = $date->format('m-d'); $dates[$dateKey]['timelist'] = generateTime($date); } dd($dates); }); function generateTime(Carbon $date) { $startOfDay = $date->startOfDay(); $eightTen = generateTwoHoursDifference($startOfDay,8); $eightTenPeriod = getPeriod($eightTen); $tenTwelve = generateTwoHoursDifference($startOfDay, 10); $tenTwelvePeriod = getPeriod($tenTwelve); $twelveFourteen = generateTwoHoursDifference($startOfDay, 12); $twelveFourteenPeriod = getPeriod($twelveFourteen); $fourteenSixteen = generateTwoHoursDifference($startOfDay, 14); $fourteenSixteenPeriod = getPeriod($fourteenSixteen); $sixTeenEighteen = generateTwoHoursDifference($startOfDay, 16); $sixTeenEighteenPeriod = getPeriod($sixTeenEighteen); $eighteenTwenty = generateTwoHoursDifference($startOfDay, 18); $eighteenTwentyPeriod = getPeriod($eighteenTwenty); $twentyTwentyTwo = generateTwoHoursDifference($startOfDay, 20); $twentyTwentyTwoPeriod = getPeriod($twentyTwentyTwo); $totalTime = [ $eightTenPeriod,$tenTwelvePeriod, $twelveFourteenPeriod,$fourteenSixteenPeriod, $sixTeenEighteenPeriod,$eighteenTwentyPeriod, $twentyTwentyTwoPeriod]; return $totalTime; } function getPeriod(array $arrayObCarbonObj) { foreach ($arrayObCarbonObj as $singleCarbonObj) { $eachHour[] = $singleCarbonObj->format('H'); } $period = implode(' ~ ', $eachHour); $starthour = $eachHour[0]; $endhour = $eachHour[1]; $expired = !$arrayObCarbonObj['timeTwo']->subMinutes(30)->isFuture(); return [ 'period' => $period, 'starthour' => $starthour, 'endhour' => $endhour, 'expired' => $expired ]; } function generateTwoHoursDifference(Carbon $date,int $start,int $increment = 2) { $dateFirstObj = (new Carbon)->parse($date->toDateTimeString()); $dateSecondtObj = (new Carbon)->parse($date->toDateTimeString()); $firstTime = $dateFirstObj->addHours($start); $secondTime = $dateSecondtObj->addHours($start+$increment); $allTime = ['timeOne' => $firstTime , 'timeTwo' => $secondTime]; return $allTime; } Route::get('/', static function () { return view('welcome'); }); Auth::routes();