メモですφ(..)メモメモ
Google Calendar API の引数の説明はこちらでお世話になった
http://www.pahoo.org/e-soul/webtech/php06/php06-31-01.shtm
PHPで祝日を求める
といいうページも上記のサイトにあった
API はGoogle API key の必要な呼び方と
そうでない呼び方があるらしい
その説明とパースと配列の作成はこちらでお世話になった
http://kijtra.com/article/get-japanese-holiday-from-google/
それで作ったのは
// Google Calendar APIを使って1年分の祝日を取得
// 祝日を取得したい西暦:$startYear
// 祝日を取得開始する月:$startMonth
// 何か月分必要か:$monthSum
function getHoliday_by_Google($startYear="", $startMonth="", $monthSum=12) {
// --- 開始(年) ---
if(empty($startYear))
{
$startYear = date("Y"); //4桁の西暦
if(empty($startMonth))
{
$startMonth = '01';
$finishMonth = '01'; //開始が変わるので終わりも変わる
}
}
// --- 開始(月) ---
if(empty($startMonth))
{
$startMonth = date("m"); //nだと1桁、mだと2桁
$finishMonth = date("m"); //開始が変わるので終わりも変わる
}
// ---終了(年と月) ---
if(empty($finishYearMonth))
{
$finishYearMonth = date('Y-m-d\TH:i:s', mktime(0, 0, 0, $startMonth + $monthSum, 0, $startYear)); //時,分,秒,月,日,年
}
$startMonth=str_pad($startMonth, 2, "0", STR_PAD_LEFT); //引数で文字列でなく数値の場合の為、0埋め2桁の文字列にする
// カレンダーID
$calendar_id = urlencode('japanese__ja@holiday.calendar.google.com');
// 取得期間
$timeMin = "{$startYear}-{$startMonth}-01T00:00:00Z";
$timeMax = "{$finishYearMonth}Z";
echo $timeMin." ".$timeMax."<br>\r\n";
$url = "https://www.google.com/calendar/feeds/{$calendar_id}/public/basic?start-min={$timeMin}&start-max={$timeMax}&max-results=30&alt=json";
$cnt = 0;
$result = @file_get_contents($url);
//~~~配列の処理~~~
}
}
説明補足:
~~~配列の処理~~~ の処理は、自分にあった処理がいいんじゃないかと
思た(嘘ですwほとんど参考と一緒になったので載せませんw)ので割愛してます^w^;
一応、PHPのDateTime::RFC3339
http://php.net/manual/ja/class.datetime.php
でRFC3339は"Y-m-d\TH:i:sP"
とありますが、そのままでは動かないのが判明(余談ですが、date("c")でも同じ)
どうも
"Y-m-d\TH:i:sP"
じゃなく、
"Y-m-d\TH:i:s"
としないと、ロケール関係の時間が入ってしまって動かない
ので単純にPHP のDateTime::RFC3339 は使えませんでした。
今のところはデベロッパーのキーが必要ないので動いていますが、
あんまり沢山使うとまずいのでPHPシリアライズのファイルでも作って
キャッシュをセーブしようかなとか考えてます。
こんな感じですが以上、メモでした<__>
コメント一覧