問題
PHPで本日が祝日かどうかを判定するには?
解決策
PHPで本日が祝日かどうかを判定
「ぱふぅ家のホームページ」様が配布してくれている、PHPで本日が祝日かどうかを判定してくれるプログラム「getHoliday」をご紹介します。
プログラムをアップデートなされたようで、「getHoliday.php」ではなく、「pahooCalendar.php」を使用します。
(2020年6月21日に内容修正)
「getHoliday」を取得する。
以下のサイトへアクセスします。
【PHPで祝日を求める – ぱふぅ家のホームページ】
https://www.pahoo.org/e-soul/webtech/php02/php02-27-01.shtm
ダウンロードを行います。
下部にある「ダウンロード」ボタンをクリックします。
必要なファイルをコピーします。
ダウンロードしたzipファイル「getHoliday.zip」を解凍します。
解凍した「getHoliday」フォルダの中から使用するファイルは以下の1点です。
- 直下にある「getHoliday.php」→「pahooCalendar.php」を任意のフォルダへコピーします。
「getHoliday」フォルダ内のファイル
getHoliday.php | プログラムのサンプルになります。 このファイルを使用します。 |
---|---|
pahooCalendar.php | 暦計算クラス「pahooCalendar」が設定されたPHPプログラムです。 日の出・日の入り・月の出・月の入りの時刻、月齢、潮の大小を計算する PHPプログラムです。 このファイルを使用します。 |
「pahooCalendar.php」を修正する。(公式のプログラムが修正されたら不要となります)
「pahooCalendar.php」を修正します。
「isHoliday」の箇所である1402~1404行が修正箇所になります。
修正前
function isHoliday($year, $month, $day) {
return getHoliday($year, $month, $day, 'jp') == FALSE ? FALSE : TRUE;
}
修正後
function isHoliday($year, $month, $day) {
return $this->getHoliday($year, $month, $day, 'jp') == FALSE ? FALSE : TRUE;
}
「getHoliday」の前に「$this->」を追加します。
「getHoliday.php」→「pahooCalendar.php」を読み込む。
includeで「getHoliday.php」→「pahooCalendar.php」を読み込みます。
include(dirname(__FILE__)."/格納したフォルダ/pahooCalendar.php");
「getHoliday.php」→「pahooCalendar.php」を使用して、祝日を判定する。
では実際に「getHoliday.php」→「pahooCalendar.php」を使用して、本日が祝日を判定してみます。
//pahooCalendarクラス
$pcl = new pahooCalendar();
$pcl->setLanguage('jp');
$y = date('Y');
$m = date('m');
$d = date('d');
if($pcl->isHoliday($y,$m,$d)){
// 祝日である場合
$holiday_data = $pcl->getHoliday($y,$m,$d,'jp');
}else{
// 祝日でない場合
}
ポイント!
- 「$pcl = new pahooCalendar();」でpahooCalendarクラスを呼び出します。
- 関数は基本的には頭に「$pcl->」を付けて呼び出します。
- 「isHoliday」は引数に年、月、日の値を持たせることで、祝日ならばtrue、祝日でないならばfalseを返してくれます。
なのでifで囲うことで祝日である場合の処理、祝日でない場合の処理を分岐することができます。 - そして「getHoliday」は引数に年、月、日の値と文字列「jp」を持たせることで祝日の名称を返してくれます。
関数「isHoliday」
引数 | 返り値 |
---|---|
年の値、月の値、日の値 例:isHoliday( 2020, 1, 1 ) |
祝日ならばtrue、そうでないならばfalseを返します。 |
関数「getHoliday」
引数 | 返り値 |
---|---|
年の値、月の値、日の値、文字列「jp」 例:getHoliday( 2020, 1, 1, ‘jp’ ) |
祝日ならば祝日の名称の文字列を返します。 例:getHoliday( 2020, 1, 1, ‘jp’ ) → ‘元旦’ |
コメント