1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

日本の休日や祝日の判定をしたり、祝日の名称を取得する拡張機能を作った

Last updated at Posted at 2023-03-03

holidays

日本の休日や祝日の判定をしたり祝日の名称を取得する拡張機能です
1955年1月~翌年くらいまでの祝日判定が出来ます
祝日と祝日に挟まれた平日と、日曜が祝日の場合の次の平日の場合の振替休日にも対応しています

内閣府の国民の祝日についてのページで公開されているCSVデータを元にしています
ライブラリをインストールした時点での最新の情報を取得するようしました

注意事項

  • 内閣府がCSVのURLを変更しない限りは大丈夫かと思います。
  • CSVをライブラリとして取り込んでいるため、この Holidays ライブラリを毎年2~3月くらいには更新する必要があります(祝日データの更新が毎年2月頃だそうです)

github

packagist


使い方

composer でインストールします

# install の場合
composer require kanagama/holidays

# update の場合
composer update -w kanagama/holidays

使いたいクラスで use するだけです

use Kanagama\Holidays\Holidays;

メソッド一覧

checkPublicHoliday(int $year, int $month, int $day): bool

指定日が祝日または振替休日であれば true を返却します

$holidays = new Holidays();
// true (春分の日)
$holiday = $holidays->checkPublicHoliday(2023, 3, 21);

getPublicHolidayName(int $year, int $month, int $day): ?string

指定日の祝日名を返却します。指定日が祝日でない場合は null を返却します。

※祝日と祝日に挟まれた平日や、日曜が祝日の場合の次の平日の場合は「振替休日」を返却します

$holidays = new Holidays();
// 春分の日
$holidayName = $holidays->getPublicHolidayName(2023, 3, 21);

checkHoliday(int $year, int $month, int $day): bool

指定日が祝日・振替休日もしくは土日であれば true を返却します。

$holidays = new Holidays();
// true (土曜)
$holiday = $holidays->checkHoliday(2023, 3, 19);

checkDayBeforePublicHoliday(int $year, int $month, int $day): bool

指定日が祝前日であれば true を返却します

$holidays = new Holidays();
// true (翌日が春分の日)
$holiday = $holidays->checkDayBeforePublicHoliday(2023, 3, 20);

checkDayAfterPublicHoliday(int $year, int $month, int $day): bool

指定日が祝後日であれば true を返却します

$holidays = new Holidays();
// true (前日が春分の日)
$holiday = $holidays->checkDayAfterPublicHoliday(2023, 3, 22);

addPublicHoliday(int $year, int $month, int $day, string $holidayName): void

指定日をオレオレ祝日に設定します。既に祝日設定されている場合は上書きされます
※こちらで設定した祝日は、振替休日判定には利用されません

$holidays = new Holidays();
$holidays->addPublicHoliday(2023, 3, 20, '設立記念日');

※他のファンクションでも同様に、指定した日が祝日判定されます
getPublicHolidayName() でも名称が取得されます



全てのメソッドが静的に呼び出せます

# example
$result = Holidays::checkPublicHoliday(2023, 3, 21);
$result = Holidays::getPublicHolidayName(2023, 3, 21);
$result = Holidays::checkHoliday(2023, 3, 21);
$result = Holidays::checkDayBeforePublicHoliday(2023, 3, 21);
$result = Holidays::checkDayAfterPublicHoliday(2023, 3, 21);
$result = Holidays::addPublicHoliday(2023, 3, 20, '設立記念日');

そもそもは下記のライブラリに追加したいなと思い作ったやつです
祝日対応予定です。よかったらどうぞ

composer install 時にエラーが出る場合

composer.json に下記を追加してみてください

    "recursive": true
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?