PHPライブラリYASUMIで営業日カレンダーの祝日設定した

営業日カレンダーに使うデータの祝日設定にYASUMIというPHPライブラリを使ってみた。

祝日の設定はちょっとだけ手間

システムで営業日換算で日付を提示する場合などがある。
お問い合わせから5営業日以内にご連絡します、なんて時に具体的な日付が出ると安心というもの。
土日は休みは確定だとして祝日は毎年違うので都度登録しないといけない。
カレンダーから拾って登録していくのは単純作業で、そこまで時間もかからないけれど、自動化できないかなあというのはいつも思っている。
思っている間に作業は終わったりするんだけど、今回ちょっとやってみた。

自動化できないものか

ざっくりググるとまず出てくるのがGoogleカレンダーから取得する方法。
まぁそうですよね。
ただ、当然のことながらGoogleのAPIを使うのが億劫。もっと郵便番号入れたら住所出てくるライブラリみたいなの無いかなって探して出てきたのが、YASUMIだった。

YASUMIのインストール

https://www.yasumi.dev/docs/getting-started/ にあるとおり。
composerでインストールするだけ。
composerのインストールを説明して力尽きたようなテキストはよく見かけるのでググれば沢山ある。

YASUMIで今年と来年の祝日を取得

こんな感じ。日付の連想配列で営業日は1が、休日は0が入る。

<?php
require 'vendor/autoload.php';

/* 最初に土日だけ休みにする */
$days=array();
$now=mktime(0,0,0,1,1,2023);
while(date("Ymd",$now)<=20241231){
  $set=1;
  if(date("N",$now)>5) $set=0;
  $days[date("Y-m-d",$now)]=$set;
  $now+=3600*24;
}

/* 2023年の祝日を設定 */
$holidays = Yasumi\Yasumi::create('Japan',2023);
foreach($holidays as $h){
  $days[(string)$h]=0;
}
/* 2024年の祝日を設定 */
$holidays = Yasumi\Yasumi::create('Japan',2024);
foreach($holidays as $h){
  $days[(string)$h]=0;
}

/* さらに会社が定める夏休みなども追加 */
$days["2023-08-15"]=0;

?>

結局カレンダーと突き合わせちゃう

処理はあっという間で簡単なんだけど、YASUMIが出した祝日を確認したら間違えていたり。いきなり元日が2023-01-02でびっくりしたり。
ということで設定した内容を最終的にカレンダーと突き合わせて確認した。

手間だけど自動化すると心配

結局こういう話。
ChatGPTみたいな難しい話じゃないけどカレンダーで確認できるなら1回はチェックした方が良いよっていう。
営業日カレンダーなんて実際のところ間違えると地味にダメージ大きいわけで、ダメージ食らいたくなければチェックした方が安心だよね。

とはいえ来年もこれ使うと思う

2024年になったら、composer updateしないとだけど、それで処理流してカレンダーと突き合わせ、という作業する気がする。
気持ちの上ではスムーズに出来たような感じだ。

この記事が気に入ったらサポートをしてみませんか?