что я на самом деле ищу точное решение, которое дано ниже с
пример:
Мне нужно каждое подмножество заданных диапазонов дат в зависимости от дня недели
Пример :
У меня есть дата начала (2015-09-29) и дата окончания (2015-11-01) периода доступности (т. Е. Бронирование).
У меня есть несколько дней регистрации, а интервал дня и дня нескольких проверок равен 7 для этого периода:
лайк
1. с воскресенья по воскресенье
2. вторник ко вторнику
3. с пятницы по пятницу
Итак, запрос на простом языке:
за период с 2015-09-29 по 2015-11-01, как я могу получить подмножество, которое будет основано на вышеупомянутой регистрации / проверке
массив ( 0 => массив ('2015-09-29', '2015-10-06') // от вторника до вторника [первое подмножество] 1 => массив ('2015-10-04', '2015-10-11') // с воскресенья по воскресенье [первое воскресенье] 2 => array ('2015-10-02', 2015-10-09) // с пятницы по пятницу [первая пятница] 3 => array ('2015-10-11', 2015-10-18) // с воскресенья по воскресенье [второе воскресенье] 3 => массив ('2015-10-06', 2015-10-13) // с четверга по вторник [второй вторник] скоро ... )
Спасибо за любой совет / предложение заранее
Вы могли бы использовать DateTime за это.
Вот рабочий пример, чтобы вы начали:
function getRanges($start, $end, $weekdays) {
$start = new DateTime($start);
$end = (new DateTime($end))->modify('-6 days');
$interval = new DateInterval('P1D');
$period = new DatePeriod($start, $interval, $end);
$ranges = [];
foreach($period as $day) {
if(in_array($day->format('w'), $weekdays)) {
$ranges[] = [
$day->format('Y-m-d'),
$day->modify('+7 days')->format('Y-m-d')
];
}
}
return $ranges;
}
$start = '2015-09-29';
$end = '2015-11-01';
$weekdays = [0,2,5]; // 0 = sunday, 1 = monday ...
$ranges = getRanges($start, $end, $weekdays);
Других решений пока нет …