*

PHPで指定日の祝日を取得する方法 GoogleAPI利用

公開日: : 最終更新日:2014/04/05 PHP, 開発

google APIを利用して指定日が祝日かどうか取得する

技術的な内容を書く場合は載せてるコードが間違ってないか確かめる必要があると思う・・・
後は検証したコードがどのVersionで動いているのか出来る限り載せる必要もあるかと。

参考にしてはいけない間違い記事
[PHP]指定した日が祝日かどうかを判定する関数
関数の閉じ方が間違っているし、strtotimeの使い方もオブジェクトのアクセス方法も意味不明。。。
strtotimeの引数はintになっているのに文字列を渡してる時点で、自分の理解を超えてしまってます。
もしかしてAPIアクセス時にタイムスタンプからでも判別できるのかなと思ったのですが、書式(Y-m-d)が決まっているっぽいです。

動作環境

PHP 5.3.1

修正コード

  	public function isJPNationalHoliday($date)
  	{
		$holidays_url = sprintf(
		'http://www.google.com/calendar/feeds/%s/public/full-noattendees?start-min=%s&start-max=%s&max-results=%d&alt=json' ,
		'outid3el0qkcrsuf89fltf7a4qbacgt9@import.calendar.google.com' , // 'japanese@holiday.calendar.google.com' ,
		//$date ,date('Y-m-d',strtotime('+1 day',$date) ,1);
		//修正箇所
		$date ,date("Y-m-d", strtotime("$date +1 day")) ,1);

		if ( $results = file_get_contents($holidays_url) ) {
			$results = json_decode($results);
			//修正箇所 $reultsはオブジェクトで返却される
			if (isset($results->feed->entry)) {
				return TRUE;
			}
			// in case php version < 5.3, use PEAR JSON.php
			//$JSON = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);
			//$results = $JSON->decode($results);
			//if(isset($results['feed']['entry'])){
			//	return TRUE;
			//}
		}
		return FALSE;
	}

JSONデコード

Services_JSONでデコードした場合は配列で返却されるので配列のアクセス方法でチェックできますが、json_decodeの場合はオブジェクトとして返却されるのでアロー演算子を使用してアクセスします。

自分も書くときは気をつけないといけないと再認識しました。。。

関連記事

jquery-logo_png

jQuery Googleカレンダー風スケジュール表 タイムテーブル

jQueryでスケジュール表もしくはタイムテーブルっぽいもの 仕事でスケジュール管理のシステム開発

記事を読む

PHP 5.4.17

Macで ローカルサーバー構築 PHP設定編

Macで ローカルサーバー環境を構築するまで PHP設定編 ネットでの情報は必要最低限しか載ってな

記事を読む

apache -h

Macで ローカルサーバー構築 Apache起動編

Macで ローカルサーバー環境を構築するまで Apache起動編 ネットでの情報は必要最低限しか載

記事を読む

jquery-logo_png

jQuery removeClass 特定のクラスを全て削除

特定のクラスを全て削除 フォームを作成した時に、入力項目に不備があった場合は目立つ様にinput属

記事を読む

jquery-logo_png

jQuery draggable,resizable 要素のサイズがずれる

uiプロパティ以外で要素のサイズ取得を試みる draggableとresizableを使用し要素の

記事を読む

jquery-logo_png

jQuery 要素の相対位置

jQueryを使って要素の相対位置を調べる Google先生に「jquery offsetLeft

記事を読む

PHP-icon

PHPでIE11ユーザーエージェント判定

IE11のユーザーエージェント判定 自作のユーザーエージェント判定クラスでIEの判定が出来てなかっ

記事を読む

server_error_500

Apache 500 Internal Server Error

久しぶりに自宅のローカルサーバーを動かしたら「Server error!」が出てゑっ!? 解決方法

記事を読む

droid

Androidで課金アプリ作製 定期購読サンプルコード編

Androidで課金アプリ作製 定期購読編 In-app Billing v3を使用したアプリ開発

記事を読む

PHP-icon

PHP substr エスケープ処理で文字化け

PHP substr 文字化け mb_substrで文字コードを合わせて切り取ればOKって記事は沢

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

jquery-logo_png
jQuery 水平スクロール&cssでカスタム可能なスクロールバーなプラグイン

水平スクロール&cssでカスタム可能なスクロールバーなプラグイン j

c
C言語 バッファオーバーランまで 関数の引数ポインタ

関数引数としてのポインタ 今回は関数引数としてのポインタに関して。

c2
C言語 バッファオーバーランまで ポインタ考察編

趣旨 ただC言語を勉強してもモチベーションがあがり辛いので、 取り

droid
Google Cloud Messaging プロジェクトナンバー API Key取得編 2014/07最新版

Google Cloud Messaging プロジェクトナンバー A

jquery-logo_png
jQuery removeClass 特定のクラスを全て削除

特定のクラスを全て削除 フォームを作成した時に、入力項目に不備があっ

→もっと見る

PAGE TOP ↑