PHP 祝日判定で検索すると、「GoogleカレンダーAPIで祝日を取得する」ばかりです。
しかし、GoogleカレンダーAPIは抜け落ちている祝日が存在することが知られています。
今回は、抜け落ちが無いようなコードをお伝えします。すごく原始的なやり方です。
1.「$holidays」に休日を格納
無名関数を使用しているため、動作環境はPHP5.3以上が必要です
$holidays = function(){ $holidays = array(); $file_array = file("./holiday.log"); for($i=0;$i<count($file_array);$i++){ if($file_array[$i]){ $file_array[$i] = str_replace(array("\r\n","\r","\n"),'',$file_array[$i]); $val = explode(',',$file_array[$i]); $holidays["$val[1]"] = $val[0]; } } return $holidays; };
2.祝日用ファイル「holiday.log」を設定
以下のデータを「holiday.log」にコピーして保存。
3.判定
配列「$holidays」の中に全て格納されています。
keyの形式は「year/month/day」(例:2013/1/1)であり、
valの出力は「祝日名」(例:$holidays[“2013/1/1”]で「元旦」)となっています。
4.祝日法が変わった場合には
祝日についてのトップページの少し下にある、祝日一覧に、入手したい年を記入して「Outlook祝日更新」をクリックします。
そうすると新しいウィンドウが出てくるので、下の方にある【 *~*年 Outlook 祝日更新データ 】を確認してください。
以下のようなデータが出てくると思います。(例:2013~2015年)
一番上の[日本] 51だけを外したデータを「holiday.log」にコピー&ペーストします。
そして、アップロードすると完了です。
5.注意点
異常なデータを削除する機能は付いていませんのでご注意ください。