「うるう年は4年に1度」——ほとんどの場面ではこれで困りません。

ただ、正確には違います。2100年はうるう年ではありません。4で割り切れるのに、2月29日が存在しない年です。

そして面白いことに、この例外ルールは私たちが生きているあいだにはほぼ出番がありません。それでも、日付を計算するプログラムには必ず組み込まれています。

うるう年を決める3つのルール

現在使われているグレゴリオ暦では、次の順番で判定します。

  1. 西暦年が4で割り切れる年はうるう年
  2. ただし100で割り切れる年は平年
  3. ただし400で割り切れる年はうるう年

後ろのルールが前のルールを上書きしていく形です。実際に当てはめると次のようになります。

4で割れる 100で割れる 400で割れる 結果
2024年 × × うるう年
2026年 × × × 平年
1900年 × 平年
2000年 うるう年
2100年 × 平年

2000年がうるう年だったのは、400で割り切れる年だったからです。100年に1度の例外を、さらに400年に1度上書きした結果にあたります。

なぜこんな複雑なルールなのか

理由は、1年の長さが365日ちょうどではないことにあります。

地球が太陽のまわりを1周するのにかかる時間は、およそ365.24219日です。1年を365日としてしまうと、毎年およそ0.24219日——約6時間ぶん暦が実際よりも進んでいきます。

そこで4年に1度うるう日を入れると、1年の平均は365.25日になります。これでかなり近づきますが、まだ約0.0078日多すぎます。128年ほどで1日ずれる計算です。

400年に97回という調整

そこでグレゴリオ暦は、うるう年を400年に100回ではなく97回に減らしました。100で割り切れる年を平年にして4回減らし、400で割り切れる年を戻して1回増やす——差し引き3回減らす、というのが例外ルールの正体です。

計算してみます。

  • 400年の総日数:365 × 400 + 97 = 146,097日
  • 1年の平均:146,097 ÷ 400 = 365.2425日

実際の365.24219日との差は、およそ0.00031日。1日ずれるまでに数千年かかる精度です。

「4年に1度」だけでは足りず、「100年に1度休む」だけでは減らしすぎるので、「400年に1度は休まない」で微調整している——という構造になっています。

この例外が起きるのは意外と先の話

ここで気づくのが、例外ルールが実際に発動する年の少なさです。

1900年から2200年までの300年間で「4で割り切れるのに平年」になる年を挙げてみると、1900年・2100年・2200年の3つしかありません。

つまり1901年から2099年までの約200年間は、例外がまったく起こりません。この期間は「4で割り切れる=うるう年」という単純なルールがそのまま通用します。

現在生きている人のほとんどは、例外年を一度も経験しません。2000年はうるう年(400で割り切れる)だったので、例外を意識する必要がなかったからです。次に例外が現れるのは2100年です。

それでも日付を扱うプログラムがこのルールを省略しないのは、過去の日付や遠い将来の日付を計算したときに黙って1日ずれるからです。実害が出るのが数十年後という理由で省いてよいものではありません。

このサイトのツールの場合

ぱぱっと日数計算ぱぱっと年齢計算は、上記3つのルールをそのまま実装したうえで日付を計算しています。

そして両ツールが対応する日付の範囲は1900年1月1日〜2100年12月31日なのですが、偶然にもこの範囲の両端の年が、どちらも例外年にあたります。

  • 1900年:4で割り切れるが100で割り切れ、400で割り切れない → 平年
  • 2100年:同上 → 平年

そのため、どちらのツールでも「1900年2月29日」「2100年2月29日」は実在しない日付として弾かれます。範囲内なのに入力できない日付がある、というのはこの理由によります。

なお、2月29日生まれの人の年齢がどう扱われるかについてはなぜ年齢は「誕生日の前日」に増えるのかで解説しています。

まとめ

  • うるう年は「4で割り切れる」→「100で割り切れる年は平年」→「400で割り切れる年はうるう年」の3段階で決まる
  • 2100年は平年。2000年は400で割り切れたのでうるう年だった
  • 1年の実際の長さは約365.24219日。400年に97回のうるう日で平均365.2425日にそろえている(差は約0.00031日)
  • 1901年〜2099年は例外が起きないため、「4年に1度」で実用上困らない
  • このサイトのツールの対応範囲は1900年〜2100年で、両端がどちらも例外年。そのため2月29日が存在しない

日数や年齢の計算はぱぱっと日数計算ぱぱっと年齢計算でご利用いただけます。うるう年の判定は上記のルールどおりに行っているため、2月29日をまたぐ計算もそのまま扱えます。

なお、この記事はグレゴリオ暦の仕組みを一般的に整理したものです。歴史上の日付(グレゴリオ暦が導入される前の期間)については、国や地域によって暦の切り替え時期が異なります。