次のような 2 つの日付の間の各曜日の日数を取得する必要があります。
2013-01-01 to 2013-01-15
Mo:2
Tu:3
We:2
Th:2
Fr:2
Sa:2
Su:2
このコードは以前にどこで入手したかわかりませんでしたが、機能しているように見えましたが、2013-03-01 から 2013-03-11 のように機能しない日付範囲があることに気付きました。月曜日が 2 日ではなく 1 日と報告されます。 .
function daysOfWeekBetween($start_date, $end_date, $weekDay)
{
$first_date = strtotime($start_date." -1 days");
$first_date = strtotime(date("M d Y",$first_date)." next ".$weekDay);
$last_date = strtotime($end_date." +1 days");
$last_date = strtotime(date("M d Y",$last_date)." last ".$weekDay);
return floor(($last_date - $first_date)/(7*86400)) + 1;
}
daysOfWeekBetween($date_range['start_date'], $date_range['end_date'], 'Monday');