はじめに
こんばんは。
以前 GoogleCalenderから祝日データを取得する 記事を上げたのですが、Yasumiというライブラリを使用して、祝日データをとるような処理をしたので記録を残しておきます。
本題
1. 現在が祝日かどうか
<?php use Yasumi\Yasumi; function isHoliday(\DateTimeInterface $currentTime, $country = 'Japan', $locale = 'ja_JP'): bool { $holidays = Yasumi::create($country, (int)$currentTime->format('Y'), $locale); return $holidays->isHoliday($currentTime); } isHoliday(new \DateTime('2020-03-20')); => true
2. その年の祝日一覧
<?php use Yasumi\Yasumi; function holidays(\DateTimeInterface $currentTime, $country = 'Japan', $locale = 'ja_JP'): array { $holidays = Yasumi::create($country, (int)$currentTime->format('Y'), $locale); $results = []; foreach ($holidays->getHolidays() as $holiday) { $results[$holiday->format('Y-m-d')] = $holiday->getName(); } return $results; } holidays(new \DateTime('2020-03-20')); => array(18) { '2020-01-01' => string(6) "元日" '2020-01-13' => string(12) "成人の日" '2020-02-11' => string(18) "建国記念の日" '2020-02-23' => string(15) "天皇誕生日" '2020-02-24' => string(24) "天皇誕生日 observed" '2020-03-20' => string(12) "春分の日" '2020-04-29' => string(12) "昭和の日" '2020-05-03' => string(15) "憲法記念日" '2020-05-04' => string(15) "みどりの日" '2020-05-05' => string(15) "こどもの日" '2020-05-06' => string(24) "憲法記念日 observed" '2020-07-23' => string(9) "海の日" '2020-07-24' => string(18) "スポーツの日" '2020-08-10' => string(9) "山の日" '2020-09-21' => string(12) "敬老の日" '2020-09-22' => string(12) "秋分の日" '2020-11-03' => string(12) "文化の日" '2020-11-23' => string(18) "勤労感謝の日" }
3. 特別な祝日を設定
<?php use Yasumi\Holiday; use Yasumi\Yasumi; function isHoliday(\DateTimeInterface $currentTime, $country = 'Japan', $locale = 'ja_JP'): bool { $holidays = Yasumi::create($country, (int)$currentTime->format('Y'), $locale); $holidays->addHoliday(new Holiday( 'special_holiday_1', ['en' => 'Special Holiday', 'ja' => '特別休日'], new \DateTime('2020-03-21'), 'ja_JP', Holiday::TYPE_OTHER )); return $holidays->isHoliday($currentTime); } isHoliday(new \DateTime('2020-03-21')); => true
終わりに
3番は意外と使い勝手いいなと思いました。 ほかにも色々あるっぽいので、使い込んでみたいです。
現場からは以上です。