「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

Javaで日付処理を行う際、「その日が日本の祝日かどうか」を判定したい場面は非常に多くあります。
例えば、バッチ処理の営業日制御帳票出力日締日計算スケジューラ制御などです。

本記事では、Javaで日本の祝日判定を実装する代表的な方法を、シンプルな実装から実務向けの方法まで解説します。


日本の祝日判定が難しい理由

日本の祝日は、以下のような特徴があります。

  • 年によって日付が変わる祝日(例:海の日、敬老の日)

  • 春分の日・秋分の日のように天文学的に決まる祝日

  • 振替休日・国民の休日の存在

  • 将来的な法改正リスク

そのため、単純な if 文や固定日付の判定では破綻しやすいのが実情です。


方法①:Java標準API(java.time)だけで実装する(簡易)

Java標準APIには「祝日判定」の直接的な機能はありませんが、
自前で祝日一覧を管理することで対応できます。

実装例(固定祝日のみ) 

メリット

  • 依存ライブラリなし

  • 実装が非常に簡単

デメリット

  • 毎年メンテナンスが必要

  • 振替休日・移動祝日に弱い

  • 実務では非推奨


方法②:祝日データを外部ファイル(CSV / DB)で管理する(実務向け)

実務では、祝日をマスタデータとして管理するケースが多くあります。

祝日テーブル例

holiday_dateholiday_name
2025-01-01元日
2025-01-13成人の日
2025-02-11建国記念の日

Java実装例

メリット

  • 法改正に強い

  • バッチ処理・業務システム向け

  • SQLやCSVで柔軟に管理可能

デメリット

  • 初期データ準備が必要


方法③:ライブラリを使う(最もおすすめ)

日本の祝日判定で定番なのが 祝日判定ライブラリ の利用です。

有名な選択肢

  • jollyday

  • holiday-jp

ここでは jollyday を例にします。


jollyday を使った祝日判定

Maven依存関係

実装例

メリット

  • 振替休日・国民の休日にも対応

  • メンテナンス不要

  • 実務で安心して使える

デメリット

  • 外部ライブラリ依存


営業日判定(祝日+土日)

実務では「祝日かどうか」よりも、営業日かどうかを判定するケースが多いです。

実装例


どの方法を選ぶべきか?

方法おすすめ度用途
固定コード★☆☆学習・検証用
マスタ管理★★★業務システム
ライブラリ★★★★最速・安全

👉 業務システムでは「祝日マスタ」または「ライブラリ利用」が鉄板です。


まとめ

  • Java標準APIだけでは祝日判定は難しい

  • 実務では「外部データ」または「ライブラリ」を使う

  • 営業日判定は祝日+土日をセットで考える

  • 将来の法改正を見越した設計が重要

祝日判定は一見シンプルですが、後から修正コストが高くなりがちな処理です。
最初から堅牢な方法を選ぶことをおすすめします。

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x