祝日のデータを得るにはPHP用のライブラリ集「PEAR(ぺあー)」にあるものを使えば簡単らしいが、Google カレンダーのサイトから引っ張ってくる方法もあるらしく、簡単そうなので試してみました。以下のサイトを参照させていただきました。
Googleカレンダーから祝日情報を取得。 | almondlab.
試しに、以下のテキストを作成し、.phpファイルとして保存し、サーバーへアップ。その後、ブラウザで表示してみました。
<!DOCTYPE html> <html lang="ja"> <head> <title>祝日の連想配列を作る</title> <meta charset="UTF-8"> <?php</p> <p>//Googleカレンダーから祝日を取得 function getHolidays($year) { $holidays = array();</p> <p>//Googleカレンダーから、指定年の祝日情報をJSON形式で取得するためのURL $url = sprintf( 'http://www.google.com/calendar/feeds/%s/public/full?alt=json&%s&%s', 'japanese__ja%40holiday.calendar.google.com', 'start-min='.$year.'-01-01', 'start-max='.$year.'-12-31' );</p> <p>//JSON形式で取得した情報を配列に変換 $results = json_decode(file_get_contents($url), true);</p> <p>//年月日(例:20120512)をキーに、祝日名を配列に格納 foreach ($results['feed']['entry'] as $value) { $date = str_replace('-', '', $value['gd$when'][0]['startTime']); $title = $value['title']['$t']; $holidays[$date] = $title; }</p> <p>//祝日の配列を早い順に並び替え ksort($holidays);</p> <p>//配列として祝日を返す return $holidays; }</p> <p>?> </head> <body></p> <p><?php</p> <p>for ($i = 2010; $i< 2016; $i++) { /////////年を指定し、その年の祝日データをGoogleカレンダーから得る///////// $holidays = getHolidays($i);</p> <p>/////////連想配列のキーと値を表示を表示する///////// foreach ($holidays as $key => $val) { print "\$holidays[\"".$key."\"] =\"".$val."\";<BR>"; } }</p> <p>?> </body> </html>
確かに、データが取れているのですが、多少の問題がありそうです。
(1)Googleサイトがダウンしたら使えない。またデータ取得に多少時間がかかる。
(2)現在は取得できるデータは、2012年~2016年分のみ。まあ、これは問題ではない。
(3)データに抜けがある。
・・・という訳で、取得したデータに、不足分を追加して、そのままGoogleサイトへのアクセスなしで使えるようにしたいと思います。
赤文字の行が追加したデータです。
祝日の確認には、以下のサイトを利用させていただきました。
2013年3月カレンダー – 日めくりカレンダー.com
$holidays[“20120101″] =”元日”;
$holidays[“20120102″] =”振替休日”;
$holidays[“20120109″] =”成人の日”;
$holidays[“20120211″] =”建国記念の日”;
$holidays[“20120320″] =”春分の日”;
$holidays[“20120429″] =”昭和の日”;
$holidays[“20120430″] =”振替休日”;
$holidays[“20120503″] =”憲法記念日”;
$holidays[“20120504″] =”みどりの日”;
$holidays[“20120505″] =”こどもの日”;
$holidays[“20120716″] =”海の日”;
$holidays[“20120917″] =”敬老の日”;
$holidays[“20120922″] =”秋分の日”;
$holidays[“20121008″] =”体育の日”;
$holidays[“20121103″] =”文化の日”;
$holidays[“20121123″] =”勤労感謝の日”;
$holidays[“20121223″] =”天皇誕生日”;
$holidays[“20121224″] =”振替休日”;
$holidays[“20130101″] =”元日”;
$holidays[“20130114″] =”成人の日”;
$holidays[“20130211″] =”建国記念の日”;
$holidays[“20130320″] =”春分の日”;
$holidays[“20130429″] =”昭和の日”;
$holidays[“20130503″] =”憲法記念日”;
$holidays[“20130504″] =”みどりの日”;
$holidays[“20130505″] =”こどもの日”;
$holidays[“20130506″] =”振替休日”;
$holidays[“20130715″] =”海の日”;
$holidays[“20130916″] =”敬老の日”;
$holidays[“20130923″] =”秋分の日”;
$holidays[“20131014″] =”体育の日”;
$holidays[“20131103″] =”文化の日”;
$holidays[“20131104″] =”振替休日”;
$holidays[“20131123″] =”勤労感謝の日”;
$holidays[“20131223″] =”天皇誕生日”;
$holidays[“20140101″] =”元日”;
$holidays[“20140113″] =”成人の日”;
$holidays[“20140211″] =”建国記念の日”;
$holidays[“20140321″] =”春分の日”;
$holidays[“20140429″] =”昭和の日”;
$holidays[“20140503″] =”憲法記念日”;
$holidays[“20140504″] =”みどりの日”;
$holidays[“20140505″] =”こどもの日”;
$holidays[“20140506″] =”振替休日”;
$holidays[“20140721″] =”海の日”;
$holidays[“20140915″] =”敬老の日”;
$holidays[“20140923″] =”秋分の日”;
$holidays[“20141013″] =”体育の日”;
$holidays[“20141103″] =”文化の日”;
$holidays[“20141123″] =”勤労感謝の日”;
$holidays[“20141124″] =”振替休日”;
$holidays[“20141223″] =”天皇誕生日”;
$holidays[“20150101″] =”元日”;
$holidays[“20150112″] =”成人の日”;
$holidays[“20150211″] =”建国記念の日”;
$holidays[“20150321″] =”春分の日”;
$holidays[“20150429″] =”昭和の日”;
$holidays[“20150503″] =”憲法記念日”;
$holidays[“20150504″] =”みどりの日”;
$holidays[“20150505″] =”こどもの日”;
$holidays[“20150506″] =”振替休日”;
$holidays[“20150720″] =”海の日”;
$holidays[“20150921″] =”敬老の日”;
$holidays[“20150922″] =”国民の休日”; // 国民の祝日 → 国民の休日
$holidays[“20150923″] =”秋分の日”;
$holidays[“20151012″] =”体育の日”;
$holidays[“20151103″] =”文化の日”;
$holidays[“20151123″] =”勤労感謝の日”;
$holidays[“20151223″] =”天皇誕生日”;
$holidays[“20160101″] =”元日”;
$holidays[“20160111″] =”成人の日”;
$holidays[“20160211″] =”建国記念の日”;
$holidays[“20160320″] =”春分の日”;
$holidays[“20160321″] =”振替休日”;
$holidays[“20160429″] =”昭和の日”;
$holidays[“20160503″] =”憲法記念日”;
$holidays[“20160504″] =”みどりの日”;
$holidays[“20160505″] =”こどもの日”;
$holidays[“20160718″] =”海の日”;
$holidays[“20160919″] =”敬老の日”;
$holidays[“20160922″] =”秋分の日”;
$holidays[“20161010″] =”体育の日”;
$holidays[“20161103″] =”文化の日”;
$holidays[“20161123″] =”勤労感謝の日”;
$holidays[“20161223″] =”天皇誕生日”;
$holidays[“20120102″] =”振替休日”;
$holidays[“20120109″] =”成人の日”;
$holidays[“20120211″] =”建国記念の日”;
$holidays[“20120320″] =”春分の日”;
$holidays[“20120429″] =”昭和の日”;
$holidays[“20120430″] =”振替休日”;
$holidays[“20120503″] =”憲法記念日”;
$holidays[“20120504″] =”みどりの日”;
$holidays[“20120505″] =”こどもの日”;
$holidays[“20120716″] =”海の日”;
$holidays[“20120917″] =”敬老の日”;
$holidays[“20120922″] =”秋分の日”;
$holidays[“20121008″] =”体育の日”;
$holidays[“20121103″] =”文化の日”;
$holidays[“20121123″] =”勤労感謝の日”;
$holidays[“20121223″] =”天皇誕生日”;
$holidays[“20121224″] =”振替休日”;
$holidays[“20130101″] =”元日”;
$holidays[“20130114″] =”成人の日”;
$holidays[“20130211″] =”建国記念の日”;
$holidays[“20130320″] =”春分の日”;
$holidays[“20130429″] =”昭和の日”;
$holidays[“20130503″] =”憲法記念日”;
$holidays[“20130504″] =”みどりの日”;
$holidays[“20130505″] =”こどもの日”;
$holidays[“20130506″] =”振替休日”;
$holidays[“20130715″] =”海の日”;
$holidays[“20130916″] =”敬老の日”;
$holidays[“20130923″] =”秋分の日”;
$holidays[“20131014″] =”体育の日”;
$holidays[“20131103″] =”文化の日”;
$holidays[“20131104″] =”振替休日”;
$holidays[“20131123″] =”勤労感謝の日”;
$holidays[“20131223″] =”天皇誕生日”;
$holidays[“20140101″] =”元日”;
$holidays[“20140113″] =”成人の日”;
$holidays[“20140211″] =”建国記念の日”;
$holidays[“20140321″] =”春分の日”;
$holidays[“20140429″] =”昭和の日”;
$holidays[“20140503″] =”憲法記念日”;
$holidays[“20140504″] =”みどりの日”;
$holidays[“20140505″] =”こどもの日”;
$holidays[“20140506″] =”振替休日”;
$holidays[“20140721″] =”海の日”;
$holidays[“20140915″] =”敬老の日”;
$holidays[“20140923″] =”秋分の日”;
$holidays[“20141013″] =”体育の日”;
$holidays[“20141103″] =”文化の日”;
$holidays[“20141123″] =”勤労感謝の日”;
$holidays[“20141124″] =”振替休日”;
$holidays[“20141223″] =”天皇誕生日”;
$holidays[“20150101″] =”元日”;
$holidays[“20150112″] =”成人の日”;
$holidays[“20150211″] =”建国記念の日”;
$holidays[“20150321″] =”春分の日”;
$holidays[“20150429″] =”昭和の日”;
$holidays[“20150503″] =”憲法記念日”;
$holidays[“20150504″] =”みどりの日”;
$holidays[“20150505″] =”こどもの日”;
$holidays[“20150506″] =”振替休日”;
$holidays[“20150720″] =”海の日”;
$holidays[“20150921″] =”敬老の日”;
$holidays[“20150922″] =”国民の休日”; // 国民の祝日 → 国民の休日
$holidays[“20150923″] =”秋分の日”;
$holidays[“20151012″] =”体育の日”;
$holidays[“20151103″] =”文化の日”;
$holidays[“20151123″] =”勤労感謝の日”;
$holidays[“20151223″] =”天皇誕生日”;
$holidays[“20160101″] =”元日”;
$holidays[“20160111″] =”成人の日”;
$holidays[“20160211″] =”建国記念の日”;
$holidays[“20160320″] =”春分の日”;
$holidays[“20160321″] =”振替休日”;
$holidays[“20160429″] =”昭和の日”;
$holidays[“20160503″] =”憲法記念日”;
$holidays[“20160504″] =”みどりの日”;
$holidays[“20160505″] =”こどもの日”;
$holidays[“20160718″] =”海の日”;
$holidays[“20160919″] =”敬老の日”;
$holidays[“20160922″] =”秋分の日”;
$holidays[“20161010″] =”体育の日”;
$holidays[“20161103″] =”文化の日”;
$holidays[“20161123″] =”勤労感謝の日”;
$holidays[“20161223″] =”天皇誕生日”;