例) 2019-08 の第3木曜日を求める。該当する日付が無ければfalseを返す
$target = '2019-08-05';
print getWeekWdayDate($target, 3, 4);
function getWeekWdayDate($target, $week, $wday) {
list($y, $m, $d) = explode('-', $target);
// 対象月1日の曜日
$day1wday = date('w', mktime(0, 0, 0, $m, 1, $y));
// 対象月の第n曜日を計算
$day = 7 * ($week - ($wday < $day1wday ? 0 : 1)) + 1 - $day1wday + $wday;
// 月末日と比較
$lastday = date('d', mktime(0, 0, 0, $m+1, 0, $y));
if ($day > $lastday) {
return false;
} else {
return date('Y-m-d', mktime(0, 0, 0, $m, $day, $y));
}
}