現行の『祝日法』で定められている祝日等の情報をまとめています。
カレンダー処理などを構築する際の参考にしてください。
祝日の判定・祝日一覧シートの作成などは、『kt関数アドイン』『祝日一覧取得ツール』を
利用すると簡単に行なうことが出来ます。
また、VBA(VB)他の祝日判定ロジックも別途公開しています。
※ 重要 ※
・ [ 五輪 休日 ] 東京五輪 の 2021年延期に伴い、2021年に限り祝日が移動します ( 2020/11/27 改正法成立 )。
- - - - - -以下は 現在のところ進展は見られません - - - - - -
・ [ 明治の日 ] 文化の日(11/3) を 2020年から "明治の日" へ改名する動きが有ります (H30/12/15)。
・ [ 海の日 ] ハッピーマンデーを止めて、再び 『7月20日』 に戻す動きがあります (H26/8/1)。
・ [ キッズ ウィーク (学校休暇分散) ] を H30/4 実施の方向で推進するそうです (H29/5/19)。
・ 祝日分散化&ハッピーマンデー廃止法案 の動向にご注意ください( H22/2/14 )。
上記法案成立時に必要となる 祝日ロジック修正の検討 を始めました( H22/3/11 )。
[ この場所へのリンク ]
[ この場所へのリンク ]
(参考ホームページ)
『祝日法』の条文を整理すると、現在の【祝日】は下記のように定められています。
【 祝日法 改正論議 の 記録 】 , 『9月の国民の休日』 追跡記録 , 【 祝日改正 と GW の変化の歴史 】
祝 日 名 日 付 制定(公布)日 施 行 日 開 始 年 元 日 1月1日 S23(1948)/ 7/20 ← 1949〜 成人の日 1月15日 S23(1948)/ 7/20 ← 1949〜 1月第2月曜 H10(1998)/10/21 H12(2000)/1/1 2000〜 建国記念の日 2月11日 S41(1966)/ 6/25 ← 1967〜 天皇誕生日 (今上陛下) 2月23日 H29(2017)/ 6/16 H30(2019)/5/1 2020〜 春分の日 春分日 S23(1948)/ 7/20 ← 1949〜 天皇誕生日 (昭和天皇)
”みどりの日”に改称
”昭和の日”に改称4月29日 S23(1948)/ 7/20 ← 1949〜1988 H1(1989)/ 2/17 ← 1989〜2006 H17(2005)/ 5/20 H19(2007)/1/1 2007〜 憲法記念日 5月 3日 S23(1948)/ 7/20 ← 1949〜 国民の休日(注1)
”みどりの日”に改称5月 4日 S60(1985)/12/27 ← 1986〜2006 H17(2005)/ 5/20 H19(2007)/1/1 2007〜 こどもの日 5月 5日 S23(1948)/ 7/20 ← 1949〜 海の日 7月20日 H7(1995)/ 3/ 8 H8(1996)/1/1 1996〜2002 7月第3月曜日 H13(2001)/6/22 H15(2003)/1/1 2003〜 東京五輪 特別措置法 に拠り、 2020年に限り 7月23日 へ移動します。
2021年への延期に伴い、2021年に限り 7月22日 へ移動します。山の日 8月 11日 H26(2014)/5/30 H28(2016)/1/1 2016〜 東京五輪 特別措置法 に拠り、 2020年に限り 8月10日 へ移動します。
2021年への延期に伴い、2021年に限り 8月8日(日) へ移動します(翌8月9日(月)は振替休日)。敬老の日 9月15日 S41(1966)/ 6/25 ← 1966〜2002 9月第3月曜日 H13(2001)/6/22 H15(2003)/1/1 2003〜 国民の休日(注2) (注2)参照 H13(2001)/6/22 H15(2003)/1/1 2003〜 秋分の日 秋分日 S23(1948)/ 7/20 ← 1948〜 体育の日
”スポーツの日”に改称
10月10日 S41(1966)/ 6/25 ← 1966〜1999 10月第2月曜 H10(1998)/10/21 H12(2000)/1/1 2000〜2019 〃 H30(2018)/6/13 2020/1/1 2020〜 東京五輪 特別措置法 に拠り、 2020年に限り 7月24日 へ移動します
2021年への延期に伴い、2021年に限り 7月23日 へ移動します。文化の日 11月 3日 S23(1948)/ 7/20 ← 1948〜 勤労感謝の日 11月23日 S23(1948)/ 7/20 ← 1948〜 天皇誕生日 (上皇陛下) 12月23日 H1(1989)/ 2/17 ← 1989〜2018 振替休日 (日曜に重なった祝日の休日振替) 後述 S48(1973)/ 4/12 ← 1973〜 国民の休日 (祝日に挟まれた平日) 後述 S60(1985)/12/27 ← 1986〜
補足: 退位/即位日と天皇誕生日変更(12/23 ⇒ 2/23) の タイミングの関係で
2019年 (平成 31年 / 令和 元年) には 『天皇誕生日』 がありません。
[ この場所へのリンク ]
祝 日 名 英 語 表 記 ( 英語表記の出典については欄外の補足を参照 ) 元 日 New Year's Day 成人の日 Coming of Age Day 建国記念の日 National Foundation Day 春分の日 Vernal Equinox Day 昭和の日 Showa Day みどりの日 Greenery Day 憲法記念日 Constitution Memorial Day こどもの日 Children's Day 海の日 Marine Day 山の日 Mountain Day 敬老の日 Respect for the Aged Day 秋分の日 Autumnal Equinox Day 体育の日 Health and Sports Day スポーツの日 Sports Day 文化の日 National Culture Day 勤労感謝の日 Labor Thanksgiving Day 天皇誕生日 Emperor's Birthday 国民の休日 Citizen's Holiday or Holiday by law or National Holiday 振替休日 Holiday in Lieu or Substitute Holiday or
Observed Holiday or Transfer Holiday[ この場所へのリンク ]
※ 皇室関連の上4つの休日については、宮内庁に確認しました( 2004/9/24 )
[ HIH ] 《略》 His (Her) Imperial Highness : 殿下(妃殿下)皇太子明仁親王の結婚の儀 The Rite of Wedding of HIH Crown Prince Akihito 昭和天皇の大喪の礼 The Funeral Ceremony of Emperor Showa. (←末尾 ピリオド) 即位礼 正殿の儀 The Ceremony of the Enthronement
of His Majesty the Emperor (at the Seiden)皇太子徳仁親王の結婚の儀 The Rite of Wedding of HIH Crown Prince Naruhito 即位の日 (徳仁親王) The Enthronement day of HIH Crown Prince Naruhito
--- 祝日の英語名の出典について ---
主に、在サンフランシスコ日本総領事館 HP ( Archive) ) を参考にしました ( 2004/9/18 )。
※ 祝日の所管官庁である内閣府は ”英語名” の決定に関しては一切 関与していません。
外務省の一部である総領事館の文書という事で、これならば、公式に準ずる名称と考えて
良いと判断し参考にしました。
( 2017/9/28 追記 )
尚、2016年から 上記ページの 「祝日の英語名に関する情報」 は、 外務省 後援 & NGO運営 の
[ Web Japan ] サイト内 にある [ Kids Web Japan / Calendar ] という ページに移行しています。
補足: 2019/5/1 ( 即位の日 ) の 臨時祝日化に伴い 2019/5/2 も 国民の休日となります。 ( 注3 )
※ 皇室関連の臨時休日 ・皇太子明仁親王の結婚の儀 1959年 4月10日 ( 昭和 34年 ) ・昭和天皇の大喪の礼 1989年 2月24日 ( 平成 1年 ) ・即位礼 正殿の儀 (平成天皇) 1990年11月12日 ( 平成 2年 ) ・皇太子徳仁親王の結婚の儀 1993年 6月 9日 ( 平成 5年 ) ・退位の日 ( 平成天皇 ) 2019年 4月30日 ( 平成 31年 ) 国民の休日です ( 注3 ) ・即位の日 ( 徳仁親王 ) 2019年 5月 1日 ( 令和 1年 ) ・即位礼 正殿の儀 (徳仁親王) 2019年10月22日 ( 令和 1年 )
[ この場所へのリンク ]
(補) 「明治改元の布告」の詔書に記されている日付は【明治元年九月八日】になっていますが、「改暦の布告」が
※改 元 (西暦変換) 明治:M1. 9. 8 〜 M45. 7.29(1868. 9. 8 〜 1912. 7.29)明治 + 1867明治:M1.10.23 〜 M45. 7.29 (1868.10.23 〜 1912. 7.29) 明治 + 1867 改元の布告 大正:T1. 7.30 〜 T15.12.24 (1912. 7.30 〜 1926.12.24) 大正 + 1911 改元の布告 昭和:S1.12.25 〜 S64. 1. 7 (1926.12.25 〜 1989. 1. 7) 昭和 + 1925 改元の布告 平成:H1. 1. 8 〜 H31.4.30 (1989. 1. 8 〜 2019. 4.30) 平成 + 1988 元号法 , 政令 令和:R1. 5. 1 〜 (2019. 5. 1 〜 ) 令和 + 2018 元号法 , 政令
発せられたのは【明治五年】です。即ち、それ以前の日付は旧暦日付で記されている訳です。
明治元(1868)年九月八日を新暦に直すと【1868年10月23日】になります。
歴史について語るならば「明治元(1868)年九月八日」と表現するべきでしょうが、コンピューター等において期間
を計算する場合を考えれば、新暦の基準でそのまま遡った「1868年10月23日」を使わないと正しい期間は得ら
れません。 (2002/7/4 追記)
※振替休日 S48(1973)/4/12制定&施行
”祝日が日曜にあたるときは、その翌日を休日”
1973/2/11(日) →振替休日なし 1973/4/29(日),9/23(日) →振替休日あり
改正:H17(2005)/5/20制定 , H19(2007)/1/1施行
”祝日が日曜にあたるときは、その日後において、
その日に最も近い「国民の祝日」でない日を休日”
5/3(日) → 5/6(水) が振替休日(追加)
5/4(日) → 5/6(火) が振替休日(追加)
5/5(日) → 5/6(月) が振替休日(従来通り)
※【国民の休日の適用】
--- 国民の祝日に関する法律 ---
第3条 3項(S60(1985)/12/27施行)
その前日及び翌日が「国民の祝日」である日(日曜日にあたる日
及び前項に規定する休日にあたる日を除く。)は、休日とする。
改正:H17(2005)/5/20制定 , H19(2007)/1/1施行
その前日及び翌日が「国民の祝日」である日(「国民の祝日」で
ない日に限る)は、休日とする。
上記の「第3条3項」に該当する「国民の休日」の日付は、現在 3つあります。
1. 「憲法記念日」と「こどもの日」に挟まれる『5月4日』 ( 注1 )
2. 平成15年(2003年)より施行された改正祝日法(敬老の日のハッピーマンデー化)によって
偶に発生する 「敬老の日」と「秋分の日」に挟まれる日付 ( 注2 )
3. 徳仁親王の即位に伴う臨時祝日(2019/5/1 即位の日)の制定により、2019年限りで
『4月30日 及び 5月2日』が休日になります ( 注3 )
(注1) 5月4日の扱いは下記のようになります(1986 〜 2006年)。
日曜日の場合は、只の日曜日(≠祝日)
月曜日の場合は憲法記念日の振替休日
火〜土曜日の場合に「国民の休日」
※ 2007年以降、5月4日は「みどりの日」で祝日に固定されています
[ この場所へのリンク ]
(注2) 平成15年施行の改正祝日法により、9月にも「国民の休日」は現れます。
( 9月の国民の休日 記載HPリンク集 )
「敬老の日」を『9月第3月曜日』にする改正により、「敬老の日」と「秋分の日」が
【1日おいて並ぶ】年が現れます。つまり、「5月4日」を休日にした条項の適用で
敬老の日と秋分の日に挟まれた、この日も休日となります( 算出式 )。
(注3) 2019年5月1日(即位の日)の制定により、2019年4月30日〜2019年5月3日にかけて
2008年 9月 日 月 火 水 木 金 土 14 15 16 17 18 19 20 敬老の日:15日 21 22 23 24 25 26 27 秋分の日:23日 2009年 9月 日 月 火 水 木 金 土 20 21 22 23 24 25 26 敬老の日:21日, 秋分の日:23日 2010年 9月 日 月 火 水 木 金 土 19 20 21 22 23 24 25 敬老の日:20日, 秋分の日:23日
2100年まででは、
2009, 2015, 2026, 2032, 2037, 2043, 2049
2054, 2060, 2071, 2077, 2088, 2094, 2099
の年が対象になります。ただし、正式には「秋分の日」は前年の官報で公示される事
によって定まる祝日ですから、この9月の「国民の休日」も官報の公示をもって
正式に定まると解釈するべきでしょう。
(補)『秋分の日』が第3火曜日にあたる年には【4連休】となります。
2100年まででは、2020/2048/2065/2076/2082/2093年で
『19(土),20(日),21(敬老の日),22(秋分の日)』
と並びます。
2つの国民の休日が発生します。 5月1日(即位の日) は 2019年限りの臨時祝日なので、
4月30日&5月2日 の 「国民の休日」も 2019年限りです。
2019年 4月 29日 : 昭和の日
4月 30日 : 国民の休日 ( 平成天皇の退位の日 )
5月 1日 : 即位の日 ( 徳仁親王 )
5月 2日 : 国民の休日
5月 3日 : 憲法記念日
[ この場所へのリンク ]
『春分の日/秋分の日』は官報に公示される事によって初めて正式に定められる祝日です。
したがって、未来の『春分の日/秋分の日』は、あくまで計算で求めた天文学上の日付という
扱いになります。天文学上の春分日/秋分日は下記の簡易計算式で求める事ができます。
「春分/秋分」以外の[二十四節気]日付も求められる略算式はこちらです。
春分日の移り変わり / 秋分日の移り変わり (二十四節気略算式 検証ブックより)
春分/秋分日リスト(1950〜2050年)
出典:恒星社厚生閣 刊
海上保安庁水路部「暦計算研究会」編 『新こよみ便利帳』 (絶版)
上記の式の各係数の意味を知りたい方は、こちらのHPで詳しく説明されています。
『暦と天文の雑学』
[ この場所へのリンク ]
(補足) 2002/3/28追記(3/28に海上保安庁水路部「暦算担当官」に確認しました)
確認時のメールでのやりとりはこちら。
上記の式で1851〜1979年の範囲では[(年−1983)÷4]となっていますが、ガウス記号
本来の意味からすると[(年−1980)÷4]となります。この相違は下記の理由に拠るものです。
ガウス記号は『その値を越えない最大の整数値』という意味です。したがって、正数の場合
には【単に小数部を切り捨てた値】ですが、負数の場合には異なりますので注意してください。
[−8.4]→ −9 [8.4]→ 8
FortranまたはC系の言語での『Int関数』は符号に関係なく【小数部を切り捨てた整数部】
という機能ですが、VB(VBA)では
Fix関数‥‥‥符号に関係なく【小数部を切り捨てた整数部】 Fix(-8.4)→−8
Int関数‥‥‥『その値を越えない最大の整数値』 Int(-8.4)→−9
という機能になります。
上記の式で『1851〜1979年』の範囲が[(年−1983)÷4]となっているのは、
Fortran/C等のInt関数でガウス記号の意味を実現する
為に行なった補正によるものです。
したがって、VB(VBA)で上記の式のまま使う場合には『Fix関数』を使ってください。
尚、VB(VBA)で『Int関数』を使えば、
『1851〜1979年』の範囲も 『 Int((年−1980)÷4) 』
となりますので、全ての期間で共通になります。
【 春分/秋分日の移り変わり ( 日付リスト ) 】
[ この場所へのリンク ]
日付Xを与えられて、この日付Xが『敬老の日と秋分の日に挟まれた祝日』かどうかの判定は
(1) 「日付X」の年 >= 2003 & 月 = 9
(2) 「日付X」の前日が『第3月曜日』‥‥‥敬老の日
(3) 〃 の翌日が『秋分の日』
です。(2)については、「ある日付を渡して第3月曜日か?」を判定する関数などが用意されて
いれば、それを利用すれば済みますが、無い場合は下記のようにします。
(2-1) 「日付X」は『火曜日』(「日付X」の前日は『月曜日』と同値)
(2-2) 「日付X」の前日は『第3』
ここで、【日付Xは第3?】とは出来ないですから注意して下さい。
何故なら『第3月曜日』の翌日は『第3火曜日 または 第4火曜日』ですから。
『第3』の判定は下記の式で求まります。
If (Day(日付) >= 15) And (Day(日付) <= 21) Then
これを数式化すると、
If ((Int((Day(日付) - 1) / 7) + 1) = 3) Then
または、If ((((Day(日付) - 1) \ 7) + 1) = 3) Then
になります。
「秋分の日」は前述の式で求まりますので、まとめると
If (Year(日付X) >= 2003) And _
(Month(日付X) = 9) And _
(Weekday(日付X) = vbTuesday) And _
((Int((Day(日付X - 1) - 1) / 7) + 1) = 3) And _
((Day(日付X) + 1) = 式1) Then
となります。
--- [式1]の内容(1980年〜2099年) ---
Int(23.2488 + 0.242194 * (Year(日付X) - 1980) - Int((Year(日付X) - 1980) / 4))
ただ、上のように全ての条件をひとつのIF文で処理するのは、非常に無駄なことです。
例えば、9月以外で3行目以降の判定は無意味ですよね。IF文をネストさせて、その時点で
必要な判定のみに分けた方が処理時間の為には有効です。
下記は出来るだけ無駄を省いた条件判定の一例です。
Select Case Month(日付X)
:
Case 9
If (Day(日付X) = 15) And _
(Year(日付X) >= 1966) And (Year(日付X) <= 2002) Then
敬老の日
ElseIf (Day(日付X) = 式1) Then
秋分の日
ElseIf (Weekday(日付X) = vbMonday) And (Year(日付X) >= 2003) Then
If ((Int((Day(日付X) - 1) / 7) + 1) = 3) Then
敬老の日
End If
ElseIf (Weekday(日付X) = vbTuesday) And (Year(日付X) >= 2003) Then
If ((Int((Day(日付X - 1) - 1) / 7) + 1) = 3) And (Day(日付X + 1) = 式1) Then
国民の休日
End If
End If
Case 10
:
End Select
(注)「秋分の日」が月/火曜日になる場合もありますから、曜日判定は「秋分の日」判定後に
行なっています。
なお、第3月曜日(15〜21)と秋分の日(22〜24)が重なる事はありません。
「年」判定と「日/曜日」判定を別のIF文に分けると、2003年以降で『第3月曜日=15日』の場合に
【敬老の日】と判断してくれません(2002年以前の条件判定の段階で抜け出す)ので、「年」判定は
And条件にしてあります。
[ この場所へのリンク ]
『9月の国民の休日』の判定条件は
「前日が敬老の日(第3月曜)」&「翌日が秋分の日」
というものですが、2150年までのカレンダーを眺めてみると、もっと単純に
【翌日の「秋分の日」が水曜日】
だけでもOKみたいです。
(理由) 2003年以降で「秋分の日」が[24日]になるのは[2103,2107年]ですが、その年は
各々[月曜,土曜]に当たりますので対象外です。そして、「22〜23の2日前」の日付
は『≦21』ですから、その日は【第3〜】に決定です。従って
2003年以降で「秋分の日」が水曜日ならば、前々日は【第3月曜】で
「敬老の日」に決定となる為、間に挟まる日付は「国民の休日」
と判断できます。
「9月の国民の休日」には第3or第4火曜日のケースがありますが、「秋分の日」は
22〜24日の範囲になるので「第4〜」固定である為、曜日だけの判定でOKです。
上に例示したコードは下記のように簡素化できることになります。
ElseIf (Year(日付X) >= 2003) And _
(Weekday(日付X + 1) = vbWednesday) And _
(Day(日付X + 1) = 式1:秋分日) Then
国民の休日
End If
この式は「ある日付を渡して、その日は国民の休日か?」という見方の算出式ですが、逆に
「ある年を渡して、その年の国民の休日は何日か?」という見方の算出式は下記になります。
If (年 >= 2003) Then
If (Weekday( DateSerial( 年, 9, 式1:秋分日 ) ) = vbWednesday ) Then
国民の休日の日付は9月の『 (式1:秋分日) - 1 』日
Else
国民の休日は無し
End If
Else
国民の休日は無し
End If