天皇誕生日はどうなる?休日判定ルーチンの作り方 | IT SKILL MAP

休日判定ルーチンの作り方

 どんなシステムであれ、作成する共通モジュールのひとつが休日判定ルーチンです。この休日判定ルーチンの作り方について考えたいと思います。


1.国民の祝日

国民の祝日

国民の祝日に関する法律(第2条)に規定される祝日です。

祝日名 祝日区分 固定日付 曜日
元日 固定 1月1日
成人の日 変動 1月 第2週 月曜日
建国記念の日 固定 2月11日
春分の日 変動(特殊)
昭和の日 固定 4月29日
憲法記念日 固定 5月3日
みどりの日 固定 5月4日
こどもの日 固定 5月5日
海の日 変動 7月 第3週 月曜日
山の日 固定 8月11日
敬老の日 変動 9月 第3週 月曜日
秋分の日 変動(特殊)
体育の日 変動 10月 第2週 月曜日
文化の日 固定 11月3日
勤労感謝の日 固定 11月23日
天皇誕生日 固定 12月23日

 現在、天皇誕生日は12月23日ですが、平成29年(2017年)6月16日に公布された天皇の退位等に関する皇室典範特例法において、この特例法の施行日、つまり平成31年(2019年)4月30日の翌日、「天皇誕生日を12月23日から2月23日(皇太子徳仁親王の誕生日)に変更する。」と規定されています。
 このため平成31年(2019年)12月23日は祝日ではなくなるということになります。
 しかし、過去の例として、4月29日。昭和天皇の誕生日は平成元年(1989年)、崩御直後の祝日法改正で「みどりの日」とされ、さらに平成19年(2007年)に「昭和の日」と名称を変更し、祝日として継続しています。
 現状は規定されていませんが、過去の例を考えると「平成の日」として祝日になる可能性もありますので、注意が必要です。


 さらに、公式な発表は一切ありませんが、ネット上では平成31年(2019年)5月1日の即位日を国民の休日として10連休にする、というニュースを良く見かけます。一応は注意しておく必要があるかもしれません。

東京オリンピックを考慮した国民の祝日の移動

 平成32年(2020年)、東京オリンピック期間の渋滞緩和を目的に、平成32年(2020年)に限定して、
 開会式前日である7月23日を海の日(通常:7月第3週月曜日)
 開会式当日である7月24日を体育の日(通常:10月第2週月曜日)
 閉会式式当日である8月10日を山の日(通常:8月11日)
以上3祝日を移動する法案を平成30年(2018年)4月12日、超党派の議員連盟は国会に提出しました。この法案が可決すると、この3祝日については通常とは全く異なる規則性になりますので、注意が必要です。


春分の日と秋分の日の計算式

 春分の日と秋分の日は、以下の特殊な計算式により算出します。


~春分の日・秋分の日の計算式~

春分の日(1980~2099)
20.8431 + 0.242194 × (西暦年 - 1980) - ((西暦年 - 1980) / 4) ※整数で切り捨て
春分の日(2100~2150)
21.8510 + 0.242194 × (西暦年 - 1980) - ((西暦年 - 1980) / 4) ※整数で切り捨て

秋分の日(1980~2099)
23.2488 + 0.242194 × (西暦年 - 1980) - ((西暦年 - 1980) / 4) ※整数で切り捨て
秋分の日(2100~2150)
24.2488 + 0.242194 × (西暦年 - 1980) - ((西暦年 - 1980) / 4) ※整数で切り捨て

 この計算式で春分の日および秋分の日を算出できるのですが、厳密には2月初日に翌年の祝日が官報で公示されるまで、未定として扱われます。
 企業システムごと、翌年以降の祝日を未定とできる場合もあれば、できない場合もあります。未定とできない場合は上記計算式で一旦確定し、もし官報の公示と相違した場合は修正するしかありません。
 しかし、現在まで、この計算式の結果と、官報の公示が相違したことはありません。

2.振替休日

 国民の祝日が日曜日の場合など、国民の祝日に関する法律(第3条2項、3項)に規定される。振替休日の規定です。


第3条 2.
「国民の祝日」が日曜日に当たるときは、その日後においてその日に最も近い「国民の祝日」でない日を休日とする。


第3条 3.
その前日及び翌日が「国民の祝日」である日(「国民の祝日」でない日に限る。)は、休日とする。

俗にいう、9月のシルバーウイークを形成するための法律で「国民の休日」と呼ばれます。他の月に対象はありません。
もともと9/15だった敬老の日を9月第3週月曜日に移動し、9/22か9/23となる秋分の日に挟まれる平日がある場合、休日にするというものです。


2050年までは以下のとおりです。

3.休日判定ルーチンの作り方

 まずは、休日判定の元となる休日一覧を作成するところから始めます。フローは以下の通りです。

 これに企業ごとの、夏季休暇、冬季休暇、創立記念日等を加味すれば完成です。

 あとはこの休日一覧を元に、休日かどうかを判定するだけです。


変動祝日 ○月第○週の月曜日 の取得方法

・成人の日(1月第2週の月曜日)
・海の日(7月第3週の月曜日)
・敬老の日(9月 第3週 月曜日)
・体育の日(10月 第2週 月曜日 )
について、一番簡単に取得する方法は、単純に1日からループを回して月曜日をカウントしてゆけば良いだけです。

 安易に組込モジュールを使用すると、第3月曜日ではなく、実は第3週の月曜日(一週目に月曜日がない場合第2月曜日になる)という間違った結果となることがありますので注意が必要です。

 ループではない方法として、例えば成人の日の場合、以下のような考え方もできます。


おすすめの関連記事

【平成31年4月30日が濃厚】和暦のシステム対応
和暦のシステム対応について考えます。