<?php $times = [ [ 'start' => '07:00', //started at 7 after midnight 'finish' => '15:00', //finished at 3 afternoon 'brake' => '01:30', //1 hour and 30 minutes of brake ], [ 'start' => '19:00', //started late afternoon 'finish' => '03:00', //finished at 3 after midnight 'brake' => '00:30', //30 minutes of brake ], ]; foreach($times as $time) { $start = $time['start']; $finish = $time['finish']; $break = $time['brake']; $startDate = \DateTime::createFromFormat('H:i', $start); $endDate = \DateTime::createFromFormat('H:i', $finish); if ($endDate < $startDate) { //end date is in the past, adjust ahead 24 hours $endDate->add(new \DateInterval('PT24H')); } $breakPeriod = new \DateInterval(vsprintf('PT%sH%sM', explode(':', $break))); $startDate->add($breakPeriod); $minutes = new \DateInterval('PT1M'); $datePeriods = new \DatePeriod($startDate, $minutes, $endDate); var_dump(iterator_count($datePeriods) / 60); }
You have javascript disabled. You will not be able to edit any code.