How to make PHP date interval select only date that match weekdays and 48 hours from now hour?

Most part of this is done, but I am missing a single step, and I can't find an easy way to do it.

The dates and times that show should be every date 2-3 business days after the current date and 48-72 business hours after the current time. Examples: If today is Wednesday November 8th at 10:00am the only business day 2-3 days later is Friday November 10th. The only business times 48-72 hours later at 10:30am - 5:15pm.

    $time = mktime(10, 11, 0, 11, 8, 2017);

    $round = 15*60;
    $now = intval(round($time / $round) * $round)+(60*30);

    $now48H = $now+(3600*48);
    $now172H = $now+(3600*172);

    $all = range($now48H,$now172H,3600);
    $i = 0;
    $arr = [];

    $datetime = new DateTime();
    $minutes = [0,15,30,45];

    foreach ($all as $k => $v) {

        if($datetime->setTimestamp($v)->format('G') < 8 || $datetime->setTimestamp($v)->format('G')>= 17){
            unset($all[$k]);
        }elseif($datetime->setTimestamp($v)->format('N') > 5 ){
            unset($all[$k]);
        }else{
            $i++;

            if (!isset($arr[date('m-d-Y',$v)])) {
                $arr[date('m-d-Y',$v)] = [];
            }

            $hours = [];
            for( $a = 0; $a <= 3; $a++ ){
                $hour = date('h:i a',$v+($minutes[$a]*60));
                array_push($arr[date('m-d-Y',$v)], $hour);
            }

            if($i==24)
                break;
        }
    }

The output is 90% what i need: an array with keys as date and values as hours interval. What I am missing is the +30min on first day start and +15 min on last day end.

Thanks.