うるう年の例外 — 100年と400年の規則、そして2100年
2100年2月29日は来ません。2100年は4で割り切れますが、うるう年ではないからです。
「4年に一度」という覚え方は、100年に一度だけ外れます。そしてその例外にも、400年に一度の例外があります。2000年は100で割り切れますが、うるう年でした。
この規則を日本で定めているのは、明治31年(1898年)5月11日に公布された勅令です。全文が1文しかありません。
条文に「西暦」という語が出てこない
明治三十一年勅令第九十号(閏年ニ関スル件)の全文を、e-Gov法令検索から取得しました。本則は次の1文だけです。
神武天皇即位紀元年数ノ四ヲ以テ整除シ得ヘキ年ヲ閏年トス但シ紀元年数ヨリ六百六十ヲ減シテ百ヲ以テ整除シ得ヘキモノノ中更ニ四ヲ以テ商ヲ整除シ得サル年ハ平年トス
「神武天皇即位紀元」は皇紀のことで、西暦に660を足した年数です。2026年なら皇紀2686年になります。この勅令は、うるう年を皇紀で定めています。 西暦という語はどこにも出てきません。
読み下すと2段構えです。前半は「皇紀の年数が4で割り切れる年をうるう年とする」。後半のただし書は「皇紀の年数から660を引いて、100で割り切れるもののうち、その商がさらに4で割り切れない年は平年とする」。
660を引いているのは、そこで西暦に戻しているからです。 皇紀から660を引けば西暦になります。前半で引いていないのは、660が4で割り切れる数(4×165)だからです。4で割った余りは、皇紀と西暦のどちらで数えても変わりません。100で割る後半では、そうはいきません。皇紀2700年は西暦2040年で、100年の区切りが揃わないのです。
条文の書き方そのものが、この計算の性質を示しています。 4で割る規則は暦の起点をずらしても変わりませんが、100で割る規則は起点が揃っていないと使えません。
この勅令の規則をそのまま実装して、施行年の1898年から3000年までの1,103年ぶんをグレゴリオ暦の規則と突き合わせました。食い違いは0件です。書き方は違っても、中身は世界標準と同じでした。
なお、この勅令は廃止されていません。e-Gov法令検索の収録状態も「現行」のままで、130年近く前の1文がいまも日本のうるう年を決めています。
なぜ例外が要るのか
地球が太陽を1周する時間(回帰年)は365.242190日です。365日ちょうどではないので、1年を365日にすると毎年0.242190日ずつ暦が季節から遅れます。
4年に一度だけ1日足すと、1年の平均は365.25日になります。回帰年との差は0.007810日、秒に直すと674.78秒です。1年に11分ほどずれる計算で、約128年で1日ずれます。 これが1582年の改暦まで使われていたユリウス暦で、そのときの改暦では暦から10日が飛ばされました。
100年に一度うるう年をやめ、400年に一度それも取り消すと、400年のうちうるう年は97回になります。1年の平均は次のとおりです。
| 暦 | 400年のうるう年 | 1年の平均 | 回帰年との差 | 1日ずれるまで |
|---|---|---|---|---|
| ユリウス暦 | 100回 | 365.25日 | 674.78秒 | 約128年 |
| グレゴリオ暦 | 97回 | 365.2425日 | 26.78秒 | 約3226年 |
差が26秒台まで縮みます。100年と400年の例外は、飾りではなく精度そのものです。 例外を入れなければ、いまの暦は約128年ごとに季節から1日ずつ離れていきます。
100で割り切れる年を1600年から2500年まで並べると、うるう年になるのは3回だけです。
- うるう年: 1600年・2000年・2400年(400で割り切れる)
- 平年: 1700年・1800年・1900年・2100年・2200年・2300年・2500年
2月29日が8年来ない年がある
2月29日は4年ごとに来る、とは限りません。1900年が平年だったので、1896年の次の2月29日は1904年でした。8年あいています。
1896年から2300年までの2月29日の間隔を数えると、4年あきが94回、8年あきが3回でした。8年あくのは次の3組です。
- 1896年 → 1904年(1900年が平年)
- 2096年 → 2104年(2100年が平年)
- 2196年 → 2204年(2200年が平年)
次にこれが起きるのは2096年です。 2096年2月29日は水曜日で、その次の2月29日は2104年2月29日の金曜日になります。いま生まれた人が経験する可能性のある出来事で、遠い未来の話ではありません。
「4年ごとに1回ずつ足す」と書いた日付の処理は、2100年2月28日と3月1日のあいだで初めて破綻します。2000年がうるう年だったせいで、400年に一度の例外だけを実装して100年の例外を忘れていても、誰も気づかないまま通ってしまうという事情もあります。1901年から2099年までのあいだは、単純な「4で割り切れるか」だけで答えが合うからです。
2月29日生まれの人は、いつ年を取るのか
平年に2月29日は無いので、この日に生まれた人がいつ1歳増えるのかは条文を追わないと決まりません。
年齢計算ニ関スル法律(明治35年法律第50号)も、全文が短い法律です。e-Gov法令検索から取得した本文は次のとおりでした。
年齢ハ出生ノ日ヨリ之ヲ起算ス 民法第百四十三条ノ規定ハ年齢ノ計算ニ之ヲ準用ス 明治六年第三十六号布告ハ之ヲ廃止ス
1行目は、年齢だけは初日を算入するという意味です。民法140条の原則は初日不算入ですが、年齢はこの法律が上書きしています。
2行目が呼んでいる民法143条2項は、次のように書かれています。
週、月又は年の初めから期間を起算しないときは、その期間は、最後の週、月又は年においてその起算日に応当する日の前日に満了する。ただし、月又は年によって期間を定めた場合において、最後の月に応当する日がないときは、その月の末日に満了する。
2024年2月29日生まれの人にあてはめます。起算日は出生日の2月29日です。
- 平年(2025年・2026年・2027年) — 2月に29日はありません。ただし書が効いて、2月の末日=2月28日に満了します
- うるう年(2028年) — 応当日の2月29日があります。本文どおり、その前日=2月28日に満了します
どちらの年も2月28日です。 2つの別々の規則が、同じ日に落ちます。ただし書を通った年と本文を通った年で答えが揃うのは偶然ではありません。平年の2月の末日は28日、うるう年の29日の前日も28日で、二つの経路が同じ日を指しているからです。
法律上は、2月28日が終わった瞬間に1つ年を取ります。4年に一度しか歳を取らない、ということはありません。
計算機はどこで間違えるか
うるう年の判定そのものを間違える処理は、いまはあまり見かけません。危ないのは、その先の日付の足し算です。
JavaScriptで1月31日に1か月を足すと、内部では「2月31日」が作られ、それが翌月へ繰り上がります。
| 基準日 | 素朴に月を足した結果 | 理由 |
|---|---|---|
| 2026年1月31日 | 2026年3月3日(火) | 2月が28日までなので3日はみ出す |
| 2024年1月31日 | 2024年3月2日(土) | 2月が29日までなので2日はみ出す |
同じ「1月31日の1か月後」が、年によって違う日になります。 うるう年かどうかが、2月と関係のない3月の日付を動かしているのです。表計算で月の数値をそのまま足す書き方でも同じことが起きます。
民法143条2項のただし書は、この場合を「最後の月に応当する日がないとき」として、その月の末日と定めています。2026年なら2月28日、2024年なら2月29日です。翌月へは繰り上がりません。上の表の2例では、素朴な足し算と答えが2日から3日ずれます。
実務でどう扱うか
- うるう年の判定を「4で割り切れるか」だけで書かない。 1901年から2099年まではそれで正解が出るので、試験も通ってしまいます。2100年を1件入れておけば、この穴は塞がります
- 2月29日を含む期間の計算は、末日の扱いを先に決める。 月の単位で足すときは、応当する日が暦に無い月が必ず出てきます
- 2月29日生まれの人の年齢は、平年でも毎年増えます。 加齢日は2月28日です
- 8年あく2月29日を忘れない。 2096年から2104年のあいだ、2月29日は一度も来ません
この棚の応当日・満了日の計算は、民法143条の規則どおりに月と年の単位の期限を出し、素朴に月を足した日付と食い違う回には印を付けます。日の単位の「◯日以内」は日数計算、土日祝を除いた日数は営業日計算にあります。