勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPで土日祝を避ける

   2014/05/17  PHP

広告物を土日祝だけ非表示にしたいと言われ、
できたらPHPで行いたかった。

調べてみるとGoogleカレンダーAPIから取得するか、
配列に祝日を入れるか。

できたら前者でいきたかったけど、指定サーバーの
PHPバージョンが古くjson_decode関数が使えなかった為
後者を用いた。

今後も使いそうなのでメモ。

GoogleカレンダーAPIを用いる方法
<?php
$flg = true;
$today = date('Y-m-d');

if (date("w", strtotime($today)) == 0 || date("w", strtotime($today)) == 6) { //日曜or土曜の場合はフラグをfalse
$flg = false;
} else {
$holidays_url = sprintf(
'http://74.125.235.142/calendar/feeds/%s/public/full-noattendees?start-min=%s&start-max=%s&max-results=%d&alt=json' ,
'outid3el0qkcrsuf89fltf7a4qbacgt9@import.calendar.google.com' ,
date('Y-m-d'),
date('Y-m-t'),
10 // 最大取得数
);
if ($results = file_get_contents($holidays_url)) {
$results = json_decode($results, true);
$holidays = array();
foreach($results['feed']['entry'] as $val) {
if ($val['gd$when'][0]['startTime'] == $today) {
$flg = false;
}
}
}
}
var_dump($flg); //true->土日祝以外 / false->土日祝
?>

■配列に祝日を入れる方法
<?php
$flg = true;
$today = date('Y-m-d');

$holiday = array(
'2014-01-01','2014-01-13','2014-02-11','2014-03-21','2014-04-29','2014-05-03','2014-05-04','2014-05-05','2014-05-06','2014-07-21','2014-09-15','2014-09-23','2014-10-13','2014-11-03','2014-11-23','2014-11-24','2014-12-23',

'2015-01-01','2015-01-12','2015-02-11','2015-03-21','2015-04-29','2015-05-03','2015-05-04','2015-05-05','2015-05-06','2015-07-20','2015-09-21','2015-09-22','2015-09-23','2015-10-12','2015-11-3','2015-11-23','2015-12-23',

'2016-01-01','2016-01-11','2016-02-11','2016-03-20','2016-03-21','2016-04-29','2016-05-03','2016-05-04','2016-05-05','2016-07-18','2016-09-19','2016-09-22','2016-10-10','2016-11-03','2016-11-23','2016-12-23',
);
if (array_search($today, $holiday)) {
$flg = false;
}

var_dump($banner_flg);
?>

 - PHP

  関連記事

PHPでファイル書き込み時に「failed to open stream: HTTP~~」エラー

PHPでファイルを書き込む際に「failed to open stream: H ...

eval関数について

ちょくちょく見ることがあったeval関数について、 なんとなく分かってきたのでメ ...

PHPで数字のプラスとマイナスを反転させる方法

PHPのプログラム内で数値のプラスとマイナスを反転させたい。以下に対応方法をメモ ...

PHPでクエリ内容を取得する

エラーログを確認している際によく分からない動作に なっているところがあった。 ペ ...

ユーザーエージェントからブラウザ名、バージョン、OS名判別

/***判別側***/ //ブラウザ情報の取得 function browser ...