概要
祝日を判定したり列挙でき、
composerでインストールできるazuyalabs/yasumiというライブラリがある。
yasumiの公式サイトで2025年の休日を確認すると19個で、
内閣府が発表している休日の数と合致するので、正確さもありそう。
なのでこれをライブラリを使う。
準備
composerでyasumiをインストールために次のコマンドを実行。
composer require azuyalabs/yasumi
test.php
次のコードを実行すればおおまかにわかるはず。
<?php
use Yasumi\Holiday;
require_once "./vendor/autoload.php";
$holidays = Yasumi\Yasumi::create('Japan', 2025, 'ja_JP');
// 年間の祝日の数を表示(振替休日は含まない)。
echo $holidays->count() . PHP_EOL;
echo '==========' . PHP_EOL;
// 指定した年月日が祝日であるか判定。
if ($holidays->isHoliday(new DateTime('2025-2-11'))) {
echo "休み" . PHP_EOL;
} else {
echo "休みではない" . PHP_EOL;
}
echo '==========' . PHP_EOL;
// 祝日の年月日を一覧表示。
$count = 0;
foreach ($holidays->getHolidayDates() as $date) {
echo ++$count . ' : ' . $date . PHP_EOL;
}
echo '==========' . PHP_EOL;
// 祝日の名称と年月日を一覧表示。
foreach ($holidays->getHolidayNames() as $name) {
$holiday = $holidays->getHoliday($name);
echo $holiday->getName() . ' : ' . $holiday . "\t\t" . $name . PHP_EOL;
}
echo '===========' . PHP_EOL;
// 下記4日分を祝日として追加。
// 12月30日
// 12月31日
// 1月2日
// 1月3日
class JapanCarendar extends Yasumi\Provider\Japan
{
public function initialize(): void
{
parent::initialize(); // TODO: Change the autogenerated stub
$this->addHoliday(new Holiday('yearEndHoliday30', ['ja' => '30日年末休暇'], new DateTime("{$this->year}-12-30"), 'ja_JP'));
$this->addHoliday(new Holiday('yearEndHoliday31', ['ja' => '31日年末休暇'], new DateTime("{$this->year}-12-31"), 'ja_JP'));
$this->addHoliday(new Holiday('newYearHoliday2', ['ja' => '2日年始休暇'], new DateTime("{$this->year}-01-02"), 'ja_JP'));
$this->addHoliday(new Holiday('newYearHoliday3', ['ja' => '3日年始休暇'], new DateTime("{$this->year}-01-03"), 'ja_JP'));
}
}
$customHolidays = Yasumi\Yasumi::create('JapanCarendar', 2025, 'ja_JP');
echo '===== 以下は休日追加後 =====' . PHP_EOL;
// 年間の祝日の数を表示(振替休日は含まない)。
echo $customHolidays->count() . PHP_EOL;
echo '==========' . PHP_EOL;
// 指定した年月日が祝日であるか判定。
if ($customHolidays->isHoliday(new DateTime('2025-2-11'))) {
echo "休み" . PHP_EOL;
} else {
echo "休みではない" . PHP_EOL;
}
echo '==========' . PHP_EOL;
// 祝日の年月日を一覧表示。
$count = 0;
foreach ($customHolidays->getHolidayDates() as $date) {
echo ++$count . ' : ' . $date . PHP_EOL;
}
echo '==========' . PHP_EOL;
// 祝日の名称と年月日を一覧表示。
foreach ($customHolidays->getHolidayNames() as $name) {
$holiday = $customHolidays->getHoliday($name);
// echo $name . "\t";
echo $holiday->getName() . ' : ' . $holiday . "\t\t" . $name . PHP_EOL;
}
実行結果
16
==========
休み
==========
1 : 2025-01-01
2 : 2025-01-13
3 : 2025-02-11
4 : 2025-02-23
5 : 2025-02-24
6 : 2025-03-20
7 : 2025-04-29
8 : 2025-05-03
9 : 2025-05-04
10 : 2025-05-05
11 : 2025-05-06
12 : 2025-07-21
13 : 2025-08-11
14 : 2025-09-15
15 : 2025-09-23
16 : 2025-10-13
17 : 2025-11-03
18 : 2025-11-23
19 : 2025-11-24
==========
元日 : 2025-01-01 newYearsDay
成人の日 : 2025-01-13 comingOfAgeDay
建国記念の日 : 2025-02-11 nationalFoundationDay
天皇誕生日 : 2025-02-23 emperorsBirthday
振替休日 (天皇誕生日) : 2025-02-24 substituteHoliday:emperorsBirthday
春分の日 : 2025-03-20 vernalEquinoxDay
昭和の日 : 2025-04-29 showaDay
憲法記念日 : 2025-05-03 constitutionMemorialDay
みどりの日 : 2025-05-04 greeneryDay
こどもの日 : 2025-05-05 childrensDay
振替休日 (みどりの日) : 2025-05-06 substituteHoliday:greeneryDay
海の日 : 2025-07-21 marineDay
山の日 : 2025-08-11 mountainDay
敬老の日 : 2025-09-15 respectfortheAgedDay
秋分の日 : 2025-09-23 autumnalEquinoxDay
スポーツの日 : 2025-10-13 sportsDay
文化の日 : 2025-11-03 cultureDay
勤労感謝の日 : 2025-11-23 laborThanksgivingDay
振替休日 (勤労感謝の日) : 2025-11-24 substituteHoliday:laborThanksgivingDay
===========
===== 以下は休日追加後 =====
20
==========
休み
==========
1 : 2025-01-01
2 : 2025-01-02
3 : 2025-01-03
4 : 2025-01-13
5 : 2025-02-11
6 : 2025-02-23
7 : 2025-02-24
8 : 2025-03-20
9 : 2025-04-29
10 : 2025-05-03
11 : 2025-05-04
12 : 2025-05-05
13 : 2025-05-06
14 : 2025-07-21
15 : 2025-08-11
16 : 2025-09-15
17 : 2025-09-23
18 : 2025-10-13
19 : 2025-11-03
20 : 2025-11-23
21 : 2025-11-24
22 : 2025-12-30
23 : 2025-12-31
==========
元日 : 2025-01-01 newYearsDay
2日年始休暇 : 2025-01-02 newYearHoliday2
3日年始休暇 : 2025-01-03 newYearHoliday3
成人の日 : 2025-01-13 comingOfAgeDay
建国記念の日 : 2025-02-11 nationalFoundationDay
天皇誕生日 : 2025-02-23 emperorsBirthday
振替休日 (天皇誕生日) : 2025-02-24 substituteHoliday:emperorsBirthday
春分の日 : 2025-03-20 vernalEquinoxDay
昭和の日 : 2025-04-29 showaDay
憲法記念日 : 2025-05-03 constitutionMemorialDay
みどりの日 : 2025-05-04 greeneryDay
こどもの日 : 2025-05-05 childrensDay
振替休日 (みどりの日) : 2025-05-06 substituteHoliday:greeneryDay
海の日 : 2025-07-21 marineDay
山の日 : 2025-08-11 mountainDay
敬老の日 : 2025-09-15 respectfortheAgedDay
秋分の日 : 2025-09-23 autumnalEquinoxDay
スポーツの日 : 2025-10-13 sportsDay
文化の日 : 2025-11-03 cultureDay
勤労感謝の日 : 2025-11-23 laborThanksgivingDay
振替休日 (勤労感謝の日) : 2025-11-24 substituteHoliday:laborThanksgivingDay
30日年末休暇 : 2025-12-30 yearEndHoliday30
31日年末休暇 : 2025-12-31 yearEndHoliday31