[php][pear]Date_Holidays_Driver_Japaneseを使ってみた
前から気になっていたので、使ってみました。Date_Holidays_Driver_Japanese。
PEAR::Date_Holidays_Driver_Japanese 0.2.0 - Do You PHP はてな
特徴としては、
- 振替休日 OK
- 国民の休日 OK
- 春分・秋分の日 OK(天文学的な計算が必要)
- ハッピーマンデー OK
- 古い休日 OK(2006年04月29日="みどりの日")
とまぁ、至れり尽くせりで感動です。
そんなわけで、使ってみました。とても汚いソースコードですね。
php:
-
<?php
-
-
/**
-
* Date_Holidays_Driver_Japanseを用いて
-
* 祝日名を取得する
-
*
-
* 2008/05/11
-
*
-
* Author: uechoco
-
* 動作確認: PHP 5.2.5
-
* require: Date_Holidays (推奨バージョン:0.18.0)
-
* require: Date_Holidays_Driver_Japanese 0.2.0
-
*
-
*/
-
-
// Date_Holidaysクラスの読み込み
-
require_once "Date/Holidays.php";
-
-
// 言語ファイルの読み込み(PEARのdataディレクトリ内)
-
-
// 祝日かどうかを判断する
-
'2008-01-01', // 元旦
-
'2008-01-14', // 成人の日
-
'2008-02-11', // 建国記念の日
-
'2008-03-20', // 春分の日
-
'2008-04-29', // 昭和の日
-
'2008-05-03', // 憲法記念日
-
'2008-05-04', // みどりの日
-
'2008-05-05', // こどもの日
-
'2008-05-06', // (振替休日)
-
'2008-07-21', // 春分の日
-
'2008-09-15', // 敬老の日
-
'2008-09-23', // 秋分の日
-
'2008-10-13', // 体育の日
-
'2008-11-03', // 文化の日
-
'2008-11-23', // 勤労感謝の日
-
'2008-11-24', // (振替休日)
-
'2008-12-23', // 天皇誕生日
-
),
-
'2009-01-01', // 元日
-
'2009-01-12', // 成人の日
-
'2009-02-11', // 建国記念の日
-
'2009-03-20', // 春分の日
-
'2009-04-29', // 昭和の日
-
'2009-05-03', // 憲法記念日
-
'2009-05-04', // みどりの日
-
'2009-05-05', // こどもの日
-
'2009-05-06', // (振替休日)
-
'2009-07-20', // 春分の日
-
'2009-09-21', // 敬老の日
-
'2009-09-22', // (国民の祝日)
-
'2009-09-23', // 秋分の日
-
'2009-10-12', // 体育の日
-
'2009-11-03', // 文化の日
-
'2009-11-23', // 勤労感謝の日
-
'2009-12-23', // 天皇誕生日
-
),
-
);
-
foreach ($pattern as $year => $yearPattern) {
-
// Date_Holidaysオブジェクトの生成(西暦を省略すると現在の西暦になる)
-
$obj =& Date_Holidays::factory('Japanese', $year);
-
if (Date_Holidays::isError($obj)) {
-
}
-
-
// 翻訳ファイルをロケール=ja_JPとして登録
-
$obj->addTranslationFile(LANG_FILE . '/Japanese/ja_JP.xml', 'ja_JP');
-
if (Date_Holidays::isError($obj)) {
-
}
-
-
foreach ($yearPattern as $d) {
-
$holiday = $obj->getHolidayForDate($d, 'ja_JP');
-
printHolidayInfo($holiday, $d);
-
}
-
echo "<hr />\n\n";
-
}
-
-
-
function printHolidayInfo($holiday, $date = '')
-
{
-
echo $date . " =========<br />\n";
-
echo "祝日ではありません!!!<br />\n";
-
} else {
-
//printf("内部名:%s<br />\n", $holiday->getInternalName());
-
//printf("プロパティ:%s<br />\n", print_r($holiday->getProperties(), true));
-
//printf("Dateクラス:%s<br />\n", print_r($holiday->getDate(), true));
-
}
-
}
-
exit;
-
?>
出力結果
CODE:
-
2008-01-01 =========
-
名前:元日
-
2008-01-14 =========
-
名前:成人の日
-
2008-02-11 =========
-
名前:建国記念の日
-
2008-03-20 =========
-
名前:春分の日
-
2008-04-29 =========
-
名前:昭和の日
-
2008-05-03 =========
-
名前:憲法記念日
-
2008-05-04 =========
-
名前:みどりの日
-
2008-05-05 =========
-
名前:こどもの日
-
2008-05-06 =========
-
名前:振替休日
-
2008-07-21 =========
-
名前:海の日
-
2008-09-15 =========
-
名前:敬老の日
-
2008-09-23 =========
-
名前:秋分の日
-
2008-10-13 =========
-
名前:体育の日
-
2008-11-03 =========
-
名前:文化の日
-
2008-11-23 =========
-
名前:勤労感謝の日
-
2008-11-24 =========
-
名前:振替休日
-
2008-12-23 =========
-
名前:天皇誕生日
-
2009-01-01 =========
-
名前:元日
-
2009-01-12 =========
-
名前:成人の日
-
2009-02-11 =========
-
名前:建国記念の日
-
2009-03-20 =========
-
名前:春分の日
-
2009-04-29 =========
-
名前:昭和の日
-
2009-05-03 =========
-
名前:憲法記念日
-
2009-05-04 =========
-
名前:みどりの日
-
2009-05-05 =========
-
名前:こどもの日
-
2009-05-06 =========
-
名前:振替休日
-
2009-07-20 =========
-
名前:海の日
-
2009-09-21 =========
-
名前:敬老の日
-
2009-09-22 =========
-
名前:国民の休日
-
2009-09-23 =========
-
名前:秋分の日
-
2009-10-12 =========
-
名前:体育の日
-
2009-11-03 =========
-
名前:文化の日
-
2009-11-23 =========
-
名前:勤労感謝の日
-
2009-12-23 =========
-
名前:天皇誕生日
foreachの中でDate_Holidaysクラスのオブジェクトを生成しているのが気持ち悪いのですが、ちょっと分けアリでして。。。その辺は近いうちに別の記事に書きます。
これで祝日処理が楽になりそうだ。