Мне нужно рассчитать дату окончания / SLA для данной даты начала, учитывая время завершения в минутах в рабочие часы / дни.
Например:
- дата начала = 2019-03-29 15: 00: 00
- время завершения = 720 (минут)
С учетом 8 рабочих часов в день (с 9:00 до 17:00) и выходных в воскресенье. Дата окончания должна быть 2019-04-01 11: 00: 00.
Итак, всего часов 12,
- по 2019-03-29 с 15:00:00 до 17:00:00 (2 часа)
- по 2019-03-30 с 09:00:00 до 17:00:00 (8 часов)
- по 2019-04-01 с 09:00:00 до 11:00:00 (2 часа)
Любая помощь по этому вопросу будет принята с благодарностью.
Пока я могу получить общее количество рабочих дней, исключая выходные, но точное время окончания - вот, где я борюсь.
Спасибо.
Обновление:
$bookingDateTime = Carbon::parse('2019-03-29 15:00:00');
$i = 0;
$completion_in_days = (720/60)/8; //converted minutes in no of days
$working_days = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
while($i < ($completion_in_days)){
if(array_search(strtolower($bookingDateTime->englishDayOfWeek), $working_days) !== false){
$i++;
}
$bookingDateTime->addDay();
}
Это даст мне дату окончания.