Инструкции
Сначала сохраните все необходимые дни недели в массиве.Я использую форму для краткой даты (D), но вы можете использовать форму для длинных (l):
$days = ["Mon", "Wed"]; //If <PHP7 use $days = array("Mon", "Wed");
Затем преобразуйте дату начала и окончания в метки времени:
$starttimestamp = strtotime($start_date);
$endtimestamp = strtotime($end_date);
Затем выполните цикл FOR, добавив 86400 микросекунд (ровно 1 день) к каждому циклу.Это даст нам новую временную метку для каждого дня между двумя днями.Создайте новую строку дня для каждого цикла:
for( $j=$starttimestamp; $j<=$endtimestamp; $j+=86400)
{
$tmpday = date('D',$j);
...
}
Наконец, выполните проверку in_array (например, если needle в стоге сена), чтобы увидеть, совпадает ли DAY с любым из наших требуемых дней:
for( $j=$starttimestamp; $j<=$endtimestamp; $j+=86400)
{
$tmpday = date('D',$j);
if(in_array($tmpday, $avail_days) ){
echo date('Y-m-d',$j);
}
}
Это все, что нужно сделать.Весь код можно увидеть ниже.Я надеюсь, что это поможет кому-то еще в будущем:
Весь код
$avail_days = ["Mon", "Wed"]; //If <PHP7 use $days = array("Mon", "Wed");
$starttimestamp = strtotime($your_start_date);
$endtimestamp = strtotime($your_end_date);
for( $j = $starttimestamp; $j <= $endtimestamp; $j += 86400 )
{
$tmpday = date('D',$j);
if(in_array($tmpday, $avail_days) ){
echo date('Y-m-d',$j); //This date has a day that matches your required days!
}
}