Конечно, есть способ: -)
Прошедшие дни просто
$elapsed_days = floor(($finish_date-$start_date) / 86400);
Это не даст нужный вам результат. То, что вы могли бы сделать, это следующий (песо) код:
$elapsed_days = floor(($finish_date-$start_date) / 86400);
for(int $i=0;$i<$elapsed_days;$i++){
$act_day_name = strtolower(date('l',$start_date+$i*86400));
if(in_array($act_day_name,$count_only){
// found matching day
}
}
Что я делаю:
Я перебираю каждый день, который находится между обеими датами, получаю имя дня с датой ('l'); и проверьте, находится ли он в массиве.
Может потребоваться какая-то тонкая настройка, но это должно помочь вам.