うるう年計算
計算結果
1年の日数
- 2月の日数
- 28 日
- 次のうるう年
- 2,028
- 前のうるう年
- 2,024
4年に一度、ただし100年に一度は除く、ただし400年に一度は戻す。だから2024年はうるう年で、1900年はうるう年ではなく、2000年はうるう年でした。この計算ツールは5年から9995年までの年について判定し、その年の日数と2月の日数、そして前後それぞれ直近のうるう年を報告します。規則そのものは短くて手でも当てられます。ツールを使う理由は2つの例外のほうで、100年と400年の例外が牙をむく年は、まさに人が尋ねてくる年なのです。
これらの年がうるう年にあたるか、その判定の規則
| 年 | 判定 | その判定の規則 |
|---|---|---|
| 2024 | うるう年 | 4で割り切れ、100で割り切れない。または400で割り切れる |
| 2000 | うるう年 | 4で割り切れ、100で割り切れない。または400で割り切れる |
| 2026 | 平年 | 4で割り切れない。または100で割り切れ、400で割り切れない |
| 1900 | 平年 | 4で割り切れない。または100で割り切れ、400で割り切れない |
| 2100 | 平年 | 4で割り切れない。または100で割り切れ、400で割り切れない |
最後の列はその判定の規則そのものなので、2つのうるう年の行はそこだけ見ると同じ文になります。どちらの半分がその行を決めたかは次のとおりです。2024年と2000年はどちらもうるう年ですが理由が違い、前者は4で割り切れて100で割り切れないから、後者は400で割り切れるからです。1900年と2100年は同じ条項で落ち、100で割り切れますが400では割り切れません。
公式
年、うるう年 = (4で割り切れ、かつ100で割り切れない) または400で割り切れる
- 年
- 判定する年。5から9995までの任意の年
- 1年の日数
- うるう年なら366、そうでなければ365
- 2月の日数
- うるう年なら29、そうでなければ28。規則が触る唯一の月です
- 次のうるう年
- その年より後で最も近いうるう年。その年自身にはなりません
- 前のうるう年
- その年より前で最も近いうるう年。その年自身にはなりません
その年にうるう日があるかを決めたいとき、予定表を書く前に2月の日数を知りたいとき、4年ごとに繰り返す行事の次のうるう年を探したいときに使います。面白いのはほぼすべて世紀の年です。1900年はうるう年ではなく、2000年はうるう年で、2100年はうるう年になりません。4で割り切れるかだけを見る実装は、この3つをすべてうるう年と呼び、2つで間違えます。
計算例
2026年 — ふつうの平年
- 2026 ÷ 4 = 506.5なので、最初の条項で外れ、規則の残りは出番がない
- 平年の日数は365日で、2月は28日。規則が長さを変えるのはこの月だけ
- 直近のうるう年は2024年と2028年で、どちらも4年差
- どちらの隣人もその年自身ではない: 2つの出力は、入力した年より厳密に前と、厳密に後になります
ふつうの場合で、いちばん間違えにくいところです。
2024年 — 4年規則だけで足りる年
- 2024 ÷ 4 = 506で割り切れ、2024は100では割り切れないので、最初の条項が満たされる
- したがってその年は366日で、2月は29日
- 直近のうるう年は2020年と2028年。2024年自身がうるう年であっても、隣に出るのはこの2つ
- 400で割り切れるかの判定は一度も行われない。最初の条項だけで答えが出ているため
4年ごとに1日を足すだけにすると、4世紀あたりおよそ3日ぶん進んでしまいます。2つの世紀の条項は、その進みをちょうど打ち消すためにあります。
1900年 — 4で割り切れるのに、うるう年ではない
- 1900 ÷ 4 = 475で割り切れるので、そこで止める規則ならうるう年と呼ぶところ
- しかし1900は100で割り切れ、400では割り切れないので、2番目の条項が余分な1日を取り戻す
- 結果は365日の平年で、2月は28日
- 直近のうるう年は1896年と1904年。4年周期がちょうど1回だけ途切れる
短くした規則が必ず間違えるのがこの場合で、覚え歌より計算ツールが役に立つ理由でもあります。
適用限界
うるう年はグレゴリオ暦の性質で、そのグレゴリオ暦自体が近似です。季節に対しておよそ3,300年で1日ずれますが、その補正は採用されていません。1582年より前の年はここでは先発グレゴリオ暦として扱うので、1500年は判定に落ちます。当時使われていたユリウス暦ではうるう年でした。このツールは1年ずつ判定するもので、範囲を渡してうるう年を並べることはできません。
よくある質問
- 2024年はうるう年か
- はい。2024年は4で割り切れ、100では割り切れないからです。366日で2月は29日あり、直近のうるう年は2020年と2028年です。4で割り切れる年は、2つの世紀の条項のどちらかが余分な1日を取り戻さないかぎり、うるう年になります。
- 1900年がうるう年でないのはなぜか
- 100で割り切れるが400では割り切れないからです。4で割り切れるかだけを見る規則なら1900年をうるう年と呼び、実際ユリウス暦ではうるう年でした。グレゴリオ暦の改暦は、400でも割り切れる場合を除いて、世紀の年からうるう日を取り上げました。2000年が1日を保ったのはまさにその理由で、2100年は失います。
- 2月は何日あるのか
- 平年は28日、うるう年は29日です。規則が長さを変えるのは2月だけで、残りの11か月は31日か30日に固定されています。1年が365日になったり366日になったりするのは、この1か月のせいです。
- 次のうるう年はいつか
- 2026年は平年なので2028年です。ここではどの年を入れても前後の両方が出ます。間隔はふつう4年ですが、飛ばされる世紀の年をまたぐと8年に伸びます。1896年から1904年がその例です。
- 古すぎる年や遠い未来の年でも使えるのか
- 5年から9995年までを受け付けます。途中の日付がすべてJavaScriptのDateで表せる範囲に収まるようにするためです。1582年より前の答えは先発グレゴリオ暦、つまり使われていなかった暦に規則を遡って当てたものになり、9996年以降は誤った数で答えるかわりに拒否します。
参考文献
- The Gregorian calendar — Claus Tøndering, Calendar FAQ
- ECMAScript Language Specification: Numbers and Dates — Ecma International