Используйте DatePeriod и DateInterval, чтобы получить определенные дни недели в течение определенного периода времени.

Мне нужно получить определенные будни в течение определенного периода времени.
В будние дни может быть только одна или более, например, только все понедельники или все понедельники, вторники и среды.

Я хотел бы использовать DatePeriod вместе с DateInterval :: createFromDateString

DateInterval :: createFromDateString принимает Относительные форматы.

Как я могу передать один или несколько дней недели в виде относительных форматов в DateInterval :: createFromDateString. Это вообще возможно?

В относительных форматах я не могу найти формат «каждый», который позволил бы сделать

$i = DateInterval::createFromDateString('every Monday');

2

Решение

Благодаря всем комментариям и ответам теперь я знаю, что не могу передать относительный формат, такой как «каждый понедельник», в DateInterval :: createFromDateString.

Но что-то вроде этого работает для моего сценария:

$start = new DateTime('2014-11-01');
$end = new DateTime('2014-12-01');
$interval = new DateInterval('P1D');
$period = new DatePeriod($start, $interval, $end);
$mydays = array('1', '3', '5');

foreach($period as $date) {
if(in_array($date->format('N'), $mydays)) {
//do something for Monday, Wednesday and Friday
}
}
7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]