PHPを使ってGoogleカレンダーが提供している祝日の情報を、配列として取得する方法です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
//2012年の祝日を取得
$holidays = getHolidays(2012);
 
//Googleカレンダーから祝日を取得
function getHolidays($year) {
	$holidays = array();
 
	//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'
	);
 
	//JSON形式で取得した情報を配列に変換
	$results = json_decode(file_get_contents($url), true);
 
	//年月日(例:20120512)をキーに、祝日名を配列に格納
	foreach ($results['feed']['entry'] as $value) {
		$date = str_replace('-', '', $value['gd$when'][0]['startTime']);
		$title = $value['title']['$t'];
		$holidays[$date] = $title;
	}
 
	//祝日の配列を早い順に並び替え
	ksort($holidays);
 
	//配列として祝日を返す
	return $holidays;
}
?>

上記のコードで取得した祝日は、次の様に日にちをキーに格納されます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/*
Array
(
	[20120101] => 元日
	[20120109] => 成人の日
	[20120211] => 建国記念の日
	[20120429] => 昭和の日
	[20120503] => 憲法記念日
	[20120504] => みどりの日
	[20120505] => こどもの日
	[20120716] => 海の日
	[20120917] => 敬老の日
	[20120922] => 秋分の日
	[20121008] => 体育の日
	[20121103] => 文化の日
	[20121123] => 勤労感謝の日
	[20121223] => 天皇誕生日
	[20121224] => 振替休日
)
*/

ただしGoogleカレンダーの祝日は正確ではない部分もあるので、利用の際には注意が必要です。