Как высчитать дату с учётом выходных?

Не знаю с какой стороны подступиться. Задача такая: высчитать дату через n (14, например) дней от сегодняшней, но с учётом выходных/не рабочих дней, то есть прибавлять, если выходные в этот период есть. Плюс надо учесть, что конечная дата тоже может попасть на выходной и, соответственно, тоже сдвинуть надо. Выходные могут быть в любые дни и будут устанавливаться через тв чекбоксами вида: дд.мм. Вывод тоже в дд.мм.
Andrey
07 июля 2021, 20:29
modx.pro
499
0

Комментарии: 4

Роман
08 июля 2021, 09:36
+1
Просто зацикливаешь, пока не получишь определенное кол-во дней. Но тут, есть ньюанс, когда рабочий день суббота, с этим пока не думал, как реализовать. Видимо нужно в исключение добавить.
<?php

$cout_day = 14; //кол-во дней
$holidayDates = [
    '2021-07-08',
    '2021-07-13',
    '2021-07-21',
    '2021-07-26'    
];

$countWD = 0;
$temp = strtotime("2021-07-01 00:00:00"); //дата старта
while($countWD < $cout_day){
    $next1WD = strtotime('+1 weekday', $temp);
    $next1WDDate = date('Y-m-d', $next1WD);
    if(!in_array($next1WDDate, $holidayDates)){
        $countWD++;
    }
    $temp = $next1WD;
}

$nextWD = date("Y-m-d", $temp);
echo $nextWD;
    Andrey
    08 июля 2021, 19:49
    0
    Спасибо за код и направление! То, что нужно. Выходные (сб, вс) не нужны, всё будет из массива. Так что days вместо weekday и всё.
      Andrey
      09 июля 2021, 18:05
      0
      А как из тв перевести в массив? тв чекбоксы, напр.: 10.07||11.07||12.07||13.07 и т.д.
        Andrey
        09 июля 2021, 19:18
        0
        Вопрос снят. Можно через explode.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4