祝日の一覧を作ってみた

工数表アプリの入力画面に表示させる「祝日」をカレンダとして作成しました。Excelで一覧を作成したので、他のアプリでも祝日一覧が欲しくなった場合には応用が利くと思われます。

祝日のパターン

Wikipediaの「国民の祝日」を見ると、祝日の一覧が記載されています。これをシステム的に定義するには、以下のようなパターンを考えます。

  • 月日が固定で決まっているもの
  • N月の第MのX曜日で決まるもの
  • 春分の日、秋分の日
  • 国民の休日
  • 特別措置で例外
  • 振替

月日が固定で決まっているもの

これは1/1=元旦や、2/11=建国記念の日のように、毎年月日が決まっているものです。ひとまず10年分の祝日を作るのも簡単です。

N月の第MのX曜日で決まるもの

1月の第2月曜日=成人の日のように、N=1月の第M=2 X=月曜日で決まります。月初が月曜日の場合、第2月曜日は「8日」になりますが、月初が火曜日だと「14日」になってしまうため、何週目であるかを判断する際には、月初の曜日を考慮する必要があります。

春分の日、秋分の日

これは毎年異なります。検索してみると国立天文台のQAページに日付が記載されています。調べたのちは月日が決まっていることと同じです。

参考URL:https://www.nao.ac.jp/faq/a0301.html

国民の休日

どうやら「祝日」と「祝日」に挟まれた平日が、「国民の休日」という祝日になるようです。2019年は4/30、5/2が特例で休日になったようですが、次の国民の休日は、「2026年の9月22日」になるようです。

特別措置の例外

これは適宜情報をキャッチアップしていくしかないと思われます。工数表の場合には、年始には当年中の休日を見直したいところです。2020年にはオリンピックに関連して、山の日、スポーツの日(体育の日)、海の日が変わります。

振替

日曜日が祝日であった場合、”次に祝日ではない日”に振り替えるようです。そのため、例えばゴールデンウィークの日曜日の次にも祝日があると次の次まで振替日がずれ込みます。

サンプル

上記のようなルールから、2030年までの祝日一覧を作成して、作り途中の工数表アプリに投入しました。その時のExcelシートの2020年までに間引いたものをアップロードしておきます。

使い方

1つ目のシートが、年月日に対する祝日名を記載した一覧表です。さらに先の未来まで必要な場合は行全体をコピーして増やせば問題ありません。2つ目のシートは祝日の定義をする場所です。下記の3つを定義できます。

  • 月日が固定で決まっているもの
  • N月の第MのX曜日で決まるもの
  • 春分の日、秋分の日
  • 特別措置の例外

振替については、1つ目のシートの「振替要否」がTRUEの行を参照します。(=つまり祝日で日曜日)その日から4日先までが「何の日か」を表示している列があります。何もなければ翌日、翌日が祝日の場合はさらにその次である必要があります。2020年5月3日の「憲法記念日」は、翌日、翌々日が「みどりの日」、「こどもの日」なので、3日後に設定しています。20年5月3日の行をサンプルにしてください。