PHPで13日の金曜日を列挙

(1/1)
2016 年(平成 28 年)5 月 13 日は、13 日の金曜日かつ仏滅であった。このような日が今後 10 年以内に何度起きるのか、PHP を使って一覧表示プログラムをつくる。

サンプル・プログラム

サンプル・プログラムの解説

0118: // メイン・プログラム =======================================================
0119: $year = isset($_GET['year']) ? $_GET['year'] : date('Y');
0120: $msg = '';
0121: 
0122: //pahooCalendarクラス
0123: $pcl = new pahooCalendar();
0124: $pcl->setLanguage('jp');
0125: 
0126: if ($year >= 1948 && $year <= 2099) {
0127:     $msg = "<table>\n";
0128:     $day = 13;
0129:     $cnt = 1;
0130:     for ($yyyy = $year$yyyy < $year + 10; $yyyy++) {
0131:         $pcl->makeLunarCalendar($year);
0132:         $msg .= sprintf("<tr><td class=\"index\" colspan=\"3\">%04d年</td></tr>\n", $yyyy);
0133:         for ($month = 1; $month <= 12; $month++) {
0134:             $ww = $pcl->getWeekNumber($yyyy$month$day);
0135:             if ($ww == 5) {
0136:                 $youbi = $pcl->getWeekString($yyyy$month$day);
0137:                 list($month_lunar$day_lunar$flag) = $pcl->Gregorian2Lunar($year$month$day);
0138:                 $rokuyou = $pcl->rokuyou($month_lunar$day_lunar);
0139:                 $msg .= sprintf("<tr><td>%02d</td><td>%02d月%02d日(%s)</td><td>%s</td></tr>\n", $cnt$month$day$youbi$rokuyou);
0140:                 $cnt++;
0141:             }
0142:         }
0143:     }
0144:     $msg .= "</table>\n";
0145: else if ($year == FALSE) {
0146: else {
0147:     $msg = 'error > 指定できる西暦年は、1948年から2099年までです。';
0148: }
0149: 
0150: $HtmlBody = makeCommonBody($year$msg);
0151: 
0152: // 表示処理
0153: echo $HtmlHeader;
0154: echo $HtmlBody;
0155: echo $HtmlFooter;
0156: 
0157: $pcl = NULL;

曜日や六曜の計算は、ユーザークラス "pahooCalendar" に分離している。
まず、クラスファイル "pahooCalendar.php" を  require_once  し、オブジェクトを生成する。

ここでは、最初に入力した西暦年 $year から 10 年間、毎月を for 文で回し、各月 13 日の曜日番号が 5、つまり金曜日であれば六曜 (ろくよう) を計算し表示する。

六曜は旧暦から求めるが、詳細については「PHP で 3 ヶ月カレンダーを作る」を参照されたい。

参考サイト

(この項おわり)
header