- max: documentation ( source)
- min: documentation ( source)
<?php
$month_start = new DateTime("first day of this month");
$month_end = new DateTime("last day of this month");
// find the monday on/before the start of the month
$start_date = clone $month_start;
$start_date->modify((1 - $start_date->format('N')) . ' days');
while ($start_date <= $month_end) {
echo max($month_start, $start_date)->format('Y-m-d') . ' to ' . min($start_date->modify('+6 days'), $month_end)->format('Y-m-d') . "\n";
$start_date->modify('+1 day');
}