Php находит определенные дни в неделю

#php

#php

Вопрос:

Как я могу запросить с помощью datetime.

Результат моего кода:

 08-06-2019, Saturday
15-06-2019, Saturday
22-06-2019, Saturday
09-06-2019, Sunday
16-06-2019, Sunday
23-06-2019, Sunday
  

Я хочу:

 08-06-2019, Saturday
09-06-2019, Sunday
15-06-2019, Saturday
16-06-2019, Sunday
22-06-2019, Saturday
23-06-2019, Sunday
  

Мой код:

 <?php
$week       = 1;
$days       = array(7, 8);
$start_date = new DateTime('2019-06-01');
$end_date   = new DateTime('2019-06-16');

$interval   = new DateInterval("P{$week}W");
$period     = new DatePeriod($start_date, $interval, $end_date);

foreach($days as $day){
    foreach($period as $date){
        $date->modify(" {$day} day");
        echo $date->format('d-m-Y') . ', ' . $date->format('l') . '<br />';
    }
}
?>
  

Ответ №1:

Я понятия не имею, чего вы пытаетесь достичь, но этот код, похоже, работает:

 $week       = 1;
$days       = array(7, 8);
$start_date = new DateTime('2019-06-01');
$end_date   = new DateTime('2019-06-16');

$interval   = new DateInterval("P{$week}W");
$period     = new DatePeriod($start_date, $interval, $end_date);

foreach($period as $date) {
    $date->modify(" 7 days");
    echo $date->format('d-m-Y, l') . '<br />';

    $sunday = clone $date;
    $sunday->modify(" 1 day");
    echo $sunday->format('d-m-Y, l') . '<br />';
}
  

Результат:

 08-06-2019, Saturday
09-06-2019, Sunday
15-06-2019, Saturday
16-06-2019, Sunday
22-06-2019, Saturday
23-06-2019, Sunday
  

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

1. Спасибо. Как я могу добавить другие дни?

2. Я размещаю список с почтовым ящиком с полем выбора.

3. Какие другие дни? Вы задаете мне вопросы, как будто понятия не имеете, что делаете…

4. У меня есть 3 поля 1- Дата начала 2- Дата окончания 3- Дни (выберите меню) Воскресенье, понедельник, вторник, среда, четверг, пятница, суббота, воскресенье Я хочу перечислить конкретные дни по диапазону дат. Например; Дата начала: 2019-06-01 Дата окончания: 2019-06-09 Дни: воскресенье, понедельник (одиночный или множественный выбор) Результат: 2019-06-02 — Воскресенье 2019-06-03 — Понедельник 2019-06-09 — Воскресенье Было ли это описательным?