我想在两个给定的日期之间获得每个月的sat& sun数量。
例如:对于2015年7月5日的start_date和2015年8月29日的end_date,我需要在7月7日和7月份获得7个星期日和星期日。
到目前为止,我的价值一直持续到上个月的第二个月,即:没有获得8月。 怎么办?
$countSat = 0;
$countSun = 0;
$start = new DateTime('05-07-2015');
$month = $start->format('n');
$end = new DateTime('29-08-2015');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($start, $interval, $end);
$i = 0;
foreach ($period as $dt) {
if ($month != $dt->format('n')) {
$results[$i] = $countSun + $countSat;
$i++;
$countSun = 0;
$countSat = 0;
}
if ($dt->format('N') == 7) {
$countSun++;
}
if ($dt->format('N') == 6) {
$countSat++;
}
$month = $dt->format('n');
}
echo '<pre>';
print_r($results);
答案 0 :(得分:0)
在循环完成后,您忘记添加结果。循环内的月份只会从7变为8。 因此,上个月的日子正在被计算,但从未加入。
$countSat = 0;
$countSun = 0;
$start = new DateTime('05-07-2015');
$month = $start->format('n');
$end = new DateTime('29-08-2015');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($start, $interval, $end);
$i = 0;
foreach ($period as $dt) {
if ($month != $dt->format('n')) {
$results[$i] = $countSun + $countSat;
$i++;
$countSun = 0;
$countSat = 0;
}
if ($dt->format('N') == 7) {
$countSun++;
}
if ($dt->format('N') == 6) {
$countSat++;
}
$month = $dt->format('n');
}
$results[$i] = $countSun + $countSat;
echo '<pre>';
print_r($results);