@Johnick

Как расчитать рабочее время?

Приветствую.
Как лучше произвести расчет даты окончания времени, отведенного сотруднику на решение заявки с учетом рабочих дней, рабочих часов, перерывов и короткой пятницы?
Т.е. в функцию мы передаем:

$startDate = '2019-10-31 10:20:00'; // текущее время
$plusTime = 8; // сколько времени дается на решение заявки
$unit = 1; // 1 - часы, 2 - дни
$workDayStart = '09:00'; // начало рабочего дня
$workDayEnd = '18:00'; // конец рабочего дня
$shortFriday = '16:30'; // конец рабочего дня в пятницу
$startPause = '12:00'; // начало перерыва
$endPause = '13:00'; // окончание перерыва
$tz = 'Europe/Moscow'; // в какой временной зоне производить расчет

echo addTimeToDate($startDate, $plusTime, $unit, $workDayStart, $workDayEnd, $shortFriday, $startPause, $endPause, $tz);
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Во первых вынести настройки отдельно, вряд ли у вас все работают в разнобой, по этому $workDayStart и далее можно вынести в константы или статические свойства хелпера и не передавать туда 10 параметров. $unit тоже можно сделать опциональным параметром со значением по умолчанию, скорее всего он в большинстве случаев в часах.
Дальше - перевести часы/дни в минуты и считать, чистая арифметика, логики практически ноль.
Ответ написан
Комментировать
@ramiloremispum
Backend Web-dev
Еще я бы, все же, переводил бы все значения даты и времени в Timestamp. Так удобнее будет считать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы