Как исключить выходные между двумя диапазонами дат

У меня есть FromDate и ToDate и интервал дней между ними. Теперь я хочу получить все даты, кроме выходных

Если между моими FromDate и ToDate есть выходные, то эта дата будет увеличена на 2 дня в субботу и воскресенье.

В приведенном ниже примере я рассчитал все даты между 27.07.2018 и 27.08.2018 с интервалом в 5 дней между ними,

public function testdate(){
            $date_from = new \DateTime("7/27/2018");
            $date_to = new \DateTime("8/27/2018");
            $interval = new \DateInterval("P5D");
            $dates = new \DatePeriod($date_from, $interval, $date_to);
            $out = array();
            if (!empty($dates)) {
                foreach($dates as $dt) {
                    $out[] = array(
                        'month_year' => $dt->format('d/m/Y')
                    );
                }
            }  
            '<pre>';
            //$out = array_reverse($out);
            echo print_r($out); 
            '</pre>'; 
            exit;           
        }

Ожидаемый результат

Array
(
    [0] => Array
        (
            [month_year] => 27/07/2018
        )

    [1] => Array
        (
            [month_year] => 02/08/2018
        )

    [2] => Array
        (
            [month_year] => 08/08/2018
        )

    [3] => Array
        (
            [month_year] => 14/08/2018
        )

    [4] => Array
        (
            [month_year] => 20/08/2018
        )

    [5] => Array
        (
            [month_year] => 27/08/2018
        )

)

В приведенном выше примере после 20.08.2018 следующей датой будет 26.08.2018, но 26.08.2018 - воскресенье, поэтому мы исключаем это воскресенье на 1 день, и теперь следующая дата - 27.08.2018.

Если какая-либо дата встречается после расчета интервала между субботой и воскресеньем, пропустите эти выходные на 1 или 2 дня.


person Rajnikant Bajpai    schedule 27.07.2018    source источник
comment
Зачем отмечать cakephp? Одним из решений может быть вычисление ВСЕЙ даты между началом и концом, а затем проверка, является ли дата воскресеньем или субботой, и в этом случае удалить ее.   -  person Mickaël Leger    schedule 27.07.2018
comment
Bcoz я использую cakephp 3.x ... да, ты прав, как это сделать ... я не знаю ..   -  person Rajnikant Bajpai    schedule 27.07.2018
comment
Я обновил свой код ... что я пробовал   -  person Rajnikant Bajpai    schedule 27.07.2018


Ответы (1)


person    schedule
comment
ваш результат - Array ([2018] = ›Array ([7] =›)) .. мне нужно получить все дни в соответствии с моим ожидаемым выходом - person Rajnikant Bajpai; 27.07.2018
comment
foreach (новый DatePeriod ($ date_from, $ interval, $ date_to- ›add ($ oneday)) as $ day) {$ day_num = $ day-› format (N); / * 'N' дней с 1 (пн) до 7 (вс) / if ($ day_num ‹6) {/ день недели * / $ days [$ day-› format (Ymd)] = $ данные; }} - person Sandeep Bangarh; 27.07.2018
comment
Нет, он не работает так, как я ожидал. Пожалуйста, попытайтесь дать полный ответ. Или, пожалуйста, посмотрите мой код для справки. - person Rajnikant Bajpai; 27.07.2018