<html> <head> <title>第3金曜日を求める</title> </head> <body> <?php // 求める曜日(年、月、週番号、曜日) $y = 2012; $m = 3; $n = 3; $w = "金"; echo "<p>{$y}年{$m}月の第{$n}{$w}曜日</p>"; echo "<p>日付:" . get_numberx_weekday($y, $m, $n, $w) . "日</p>"; // ------------------------------------------------------------ // 指定年月のx番目のx曜日の日付を取得 // ------------------------------------------------------------ // パラメータ(年、月、週番号、曜日) // ------------------------------------------------------------ function get_numberx_weekday($y, $m, $n, $w) { // 曜日テーブルから曜日番号を取得 $ar_wd = array("日", "月", "火", "水", "木", "金", "土"); $search_week_day = array_search($w, $ar_wd); // 指定曜日の最初の日付を取得して指定週の日付を算出 $first_weekday = date("w", mktime(0, 0, 0, $m, 1, $y)); $result_day = $search_week_day - $first_weekday + 1; if ($result_day < 1) { $result_day += 7; } $result_day = $result_day + ($n - 1) * 7; if ($result_day > 31) { return 0; } return $result_day; } ?> </body> </html>
(PHPによるWebアプリケーションスーパーサンプル第2版 「6-4-9 第2月曜日を求める」より)
○実行結果
2012年3月の第3金曜日日付:16日