指定年/月/回/曜日の日付
指定した年月の第○曜日の日付を抽出
1月第2月曜日や7月第3月曜日などを表示。
PHP
/**
*
* 指定年/月/回/曜日の日付
*
* @param int $times 1-5
* @param string $W sun|mon|tue|wed|thu|fri|sat
* @param int $Y
* @param int $M
*/
function getDateWeekDay($times, $W, $Y, $M)
{
// 0 (日曜)から 6 (土曜)
switch ($W) {
case 'sun':
$num = 0;
break;
case 'mon':
$num = 1;
break;
case 'tue':
$num = 2;
break;
case 'wed':
$num = 3;
break;
case 'thu':
$num = 4;
break;
case 'fri':
$num = 5;
break;
case 'sat':
$num = 6;
break;
}
$max_day = 7 * $times;
$min_day = $max_day - 7;
// 5週目の最大値は指定年月の末日
if ($times == 5) {
$max_day = date('t', mktime(0, 0, 0, $M, 1, $Y));
}
// 指定回数目の日付から曜日マッチ処理を繰り返し
for ($i = $max_day; $i > $min_day; $i--) {
$date = date('Y-m-d', mktime(0, 0, 0, $M, $i, $Y));
if ($num == date('w', strtotime($date))) {
return $date;
break;
}
}
return;
}
サンプル