指定した最終週番号の曜日の日付を取得
function getLastWeekDate($year, $month, $dayOfWeek, $lastWeekNumber)
{
// 月の1日の日付を取得
$firstDayOfMonth = mktime(0, 0, 0, $month, 1, $year);
// 月の最終日を取得
$lastDayOfMonth = date(‘t’, $firstDayOfMonth);
// 月の最終日の曜日を取得
$lastDayWeekDay = date(‘w’, mktime(0, 0, 0, $month, $lastDayOfMonth, $year));
// 最終週の日曜日の日付を計算
$daysToLastSunday = ($lastDayWeekDay < $dayOfWeek) ? (7 – ($dayOfWeek – $lastDayWeekDay)) : ($lastDayWeekDay – $dayOfWeek);
// 月の最終週の1番目の曜日を求める
$lastSunday = strtotime(“-{$daysToLastSunday} days”, mktime(0, 0, 0, $month, $lastDayOfMonth, $year));
// 最後の週番号に該当する曜日の日付を取得
$date = strtotime(“+”.($lastWeekNumber-1).” weeks”, $lastSunday);
return date(‘Y-m-d’, $date); // 日付形式で返す
}
// 使用例
$year = 2025;
$month = 1;
$dayOfWeek = 3;
$lastWeekNumber = 1; // 最後の週番号
echo ‘<div>’ .getLastWeekDate($year, $month, $dayOfWeek, $lastWeekNumber).'</div>’;
//$weekday = 1; // 月曜日