忍者ブログ

カウンター

プロモーション

カレンダー

04 2024/05 06
S M T W T F S
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

AntinomyMy の実験室

   私のWEBアプリ実験室です!

ブログ内検索

楽天でお買い物

twitter

最新トラックバック

最新コメント

忍者アナライズ

ウェザーニュース

バーコード

本を買う

アクセス解析

Google+

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


  • 2024/05/07 06:23

Google Calendar API で祝日取得関数を作る

PHP の調べ物

メモですφ(..)メモメモ

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(000$startMonth $monthSum0$startYear)); //時,分,秒,月,日,年
    
}

    
$startMonth=str_pad($startMonth2"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シリアライズのファイルでも作って
キャッシュをセーブしようかなとか考えてます。

こんな感じですが以上、メモでした<__>

拍手[0回]

PR


  • 2015/01/31 23:59

コメント一覧

  • お名前
  • Email

  • コメント

  • Vodafone絵文字 i-mode絵文字 Ezweb絵文字
  • パスワード
[PR]