У меня есть FromDate и ToDate и интервал дней между ними. Теперь я хочу получить все даты, кроме выходных
Если между моими FromDate и ToDate есть выходные, то эта дата будет увеличена на 2 дня в субботу и воскресенье.
В приведенном ниже примере я рассчитал все даты между 27.07.2018 и 27.08.2018 с интервалом в 5 дней между ними,
public function testdate(){
$date_from = new \DateTime("7/27/2018");
$date_to = new \DateTime("8/27/2018");
$interval = new \DateInterval("P5D");
$dates = new \DatePeriod($date_from, $interval, $date_to);
$out = array();
if (!empty($dates)) {
foreach($dates as $dt) {
$out[] = array(
'month_year' => $dt->format('d/m/Y')
);
}
}
'<pre>';
//$out = array_reverse($out);
echo print_r($out);
'</pre>';
exit;
}
Ожидаемый результат
Array
(
[0] => Array
(
[month_year] => 27/07/2018
)
[1] => Array
(
[month_year] => 02/08/2018
)
[2] => Array
(
[month_year] => 08/08/2018
)
[3] => Array
(
[month_year] => 14/08/2018
)
[4] => Array
(
[month_year] => 20/08/2018
)
[5] => Array
(
[month_year] => 27/08/2018
)
)
В приведенном выше примере после 20.08.2018 следующей датой будет 26.08.2018, но 26.08.2018 - воскресенье, поэтому мы исключаем это воскресенье на 1 день, и теперь следующая дата - 27.08.2018.
Если какая-либо дата встречается после расчета интервала между субботой и воскресеньем, пропустите эти выходные на 1 или 2 дня.
cakephp
? Одним из решений может быть вычисление ВСЕЙ даты между началом и концом, а затем проверка, является ли дата воскресеньем или субботой, и в этом случае удалить ее. - person Mickaël Leger   schedule 27.07.2018