Перебор каждого дня месяца за выбранный период, с выделением последнего дня месяца
Задача: перебрать каждый день, в выбранном периоде, отдельно выделяя последний день месяца.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
echo "<h1>Расчет за период с $dtstart по $dtend</h1>"; $date=$dtstart; while($date <= $dtend){ echo "$date<br/>"; if (trim($date)==getLastDayOfMonth2(trim($date))) { echo "<b>$date</b><br/>"; }; $date = date('Y-m-d', strtotime($date.' + 1 days')); }; function getLastDayOfMonth2($dateInISO8601){ $date = explode('-', $dateInISO8601); $zx=$date; if ( !checkdate ( $date[1] , $date[2] , $date[0] ) ) return false; $start = new DateTime( $dateInISO8601 ); $end = new DateTime( $dateInISO8601 ); $end->add( new DateInterval( 'P2M' ) ); $interval = new DateInterval( 'P1D' ); $daterange = new DatePeriod($start, $interval, $end); $prev = $start; foreach ($daterange as $date){ if ($prev->format('m') != $date->format('m') ) return $zx[0]."-".$zx[1]."-".(int) $prev->format('d'); $prev = $date; } return false; } |