閏年(うるうどし、じゅんねん、英語: leap year、intercalary year)とは、閏のある年である。これに対し、閏年ではない年を平年(へいねん、英語: common year)と呼ぶ。

閏年は、太陰太陽暦では、月の運行を基準にしていることで生じる季節(太陽の運行)とのずれを補正するために、平年より暦月が一つ多く、太陽暦では季節(天動説では太陽の運行)と暦のずれとを、太陰暦では月の運行とのずれを補正するために、平年より暦日が一つ多い。その追加された日や月を閏月・閏日、総称して閏と呼ぶ。閏の挿入規則を置閏法(ちじゅんほう)と呼ぶ。

## 太陽暦

太陽暦では、季節に暦を一致させるため、暦年の平均の長さを平均回帰年(365.242 189 44日≒365日5時間48分45.168秒)になるべく一致させる。

太陽暦では、平年は365日であり、閏年は閏日が挿入されて366日である。現在広く採用されているグレゴリオ暦では、閏年は400年間に97回ある。

### 古代エジプト

古代エジプトの暦には閏年はなく、1暦年は常に365日であった。そのため、4.129年に1日の割合で暦と季節がずれた。当時すでに回帰年は365.25日という観測値が得られていたが、暦に反映されることはなかった。農民は暦ではなく恒星・シリウスの動きを頼りに農作業のスケジュールを決めた。

### ユリウス暦

ユリウス暦は、紀元前46年に古代ローマで採用され、4年に1回を閏年としていた。但し、導入直後は混乱が見られ、3年に1回を閏年としたり、暫く閏年を置かない期間があった(詳細はユリウス暦を参照)。

ユリウス暦では、閏年には2月の日数を1日増やして29日とする。閏日を2月に挿入したのは、ローマ暦の初期にはMartius(後の3月)が年初でFebruarius(後の2月)が年末だったからである。厳密には共和政初期にIanuarius(後の1月)を年初とするように変更されたが、まだ古い慣習が残っていた。

ユリウス暦の置閏法では1暦年は平均365.25日となり、約128年に1日の割合で暦と季節がずれるが、これでも閏年を置かない場合に比べれば大きな進歩であった。しかし、1500年以上に亘って使われていくうちに、次第に暦と天文学上の現象がずれてきた。ローマ・カトリック教会では325年のニカイア公会議で春分を3月21日と定めてそれを基に復活祭の日付を決めることにしたが、日数が多いが故に、16世紀には天文学上の春分が暦の上では3月11日となってしまい、問題視されるようになった。

### グレゴリオ暦

ユリウス暦では春分日がずれる問題を解決するため、ローマ教皇グレゴリウス13世は、当時を代表する学者たちを招集して委員会を作り、暦の研究を行わせた。こうして、1582年にグレゴリオ暦が制定された。グレゴリオ暦はその後数百年かけて各国で採用され、現在に至っている。

グレゴリオ暦では、次の規則に従って400年間に97回の閏年を設ける。

1. 西暦年が4で割り切れる年は(原則として)閏年。
2. ただし、西暦年が100で割り切れる年は(原則として)平年。
3. ただし、西暦年が400で割り切れる年は必ず閏年。

理解しづらければ閏年 § コンピュータシステムと閏年も参照するとよい

この置閏法によると、400年間における平均1暦年は、365+97/400=365.2425日(365日5時間49分12秒ちょうど)となり、平均回帰年との差は、1年当たり26.832秒(2015年における値)となって、かなり誤差が小さくなる。この誤差による暦と季節とのずれは約3320年で1日となる。上記の但し書きを1回で表すと、「400年に3回、100で割り切れるが400で割り切れない年は、例外で平年とする」ということになる。

グレゴリオ暦では、ユリウス暦と同じく、閏年には2月が29日まである。従って、現在のグレゴリオ暦では2月29日が閏日である。しかし、西洋の古い伝統を引き継ぐ地域では、2月24日が閏日とみなされる。詳細は「閏日#欧州における歴史」(欧米で2月24日が閏日であることの由来)を参照。

#### 日本における閏年の根拠法

日本においては、閏年の判定は西暦ではなく皇紀(神武天皇即位紀元)によって行うことが法令(明治31年勅令第90号(閏年ニ関スル件))により定められ、現在でも効力を有する。

現代の表記に直すと次の通りである。

神武天皇即位紀元年数(皇紀年数)を4で割って、割り切れる年を閏年とする。ただし、皇紀年数から660を引くと100で割り切れる年で、かつ100で割った時の商が4で割り切れない年は平年とする。

これは、西暦年数から閏年を判定する方法と同値である。

なお、西暦何年が閏年であったかについては、
下2桁が4の倍数かつ400を割り切れない100の倍数を除いた年、
「[日・月・火・水・木・金・土]曜日から始まる閏年」の項目を参照。

#### グレゴリオ暦の閏年に関するトピックス

近代オリンピックの夏季オリンピックは1896年以来、4年に1回、西暦年が4で割り切れる年に開催される(非公式扱いの1906年アテネ大会、例外的に延期された2020年東京大会は除く)。そして、1924年に開始された冬季オリンピックも、1992年のアルベールビル大会までは夏季と同じ西暦年が4で割り切れる年に開かれていた。このため、閏年はスポーツ関係を中心にしばしば「オリンピックイヤー」という名称で呼ばれている。しかし、オリンピック憲章における開催年規定には閏年との関連は言及されていない上、第2回パリ大会が開催された西暦1900年は、閏年ではなく平年であった(100で割り切れるが400で割り切れない)ので、この呼称は正確とは言えない。なお、西暦2100年も、100で割り切れるが400で割り切れない年数なので、夏季オリンピックが開かれる年であるが、平年である。

アメリカ合衆国大統領選挙も、最初の1789年の選挙を除き、西暦年が4で割り切れる年に実施されてきたが、それらの年は閏年とは限らない。

閏年の西暦年は必ず4で割り切れるので、閏年の十二支は子、辰、申のいずれかである。また、400年に3回の例外が来ない限り、同じ曜日の2月29日は28年周期で繰り返される(日→金→水→月→土→木→火→日)。

西暦2000年は、3番目のルールに該当する400年に1回の閏年であった。しかし、2番目までのルールをもって、2000年を平年と誤解する者もいた。これは2000年問題の一因でもあった。次回の4で割り切れる平年は西暦2100年である。

グレゴリオ暦の閏年に関する規則より、グレゴリオ暦では400年周期で同一パターンが繰り返されることになる。この400年の総日数(365日×400+97日=146 097日)は7で割り切れるため、曜日も400年周期で繰り返すことになる。そのため、特定の日が特定の曜日(例えば3月1日が月曜日)になる割合は、厳密にいうと7分の1にはならない。また、3番目のルールに当てはまる400年に1回の閏年(いわゆる「世紀末閏年」)の2月29日の曜日は、必ず火曜日になる。この例の発生は、次回は2400年の予定である。

- 2000年から2399年までの間に1月1日が日曜日になる割合は58/400、土曜日になる割合は56/400である。
- 不吉とされる13日の金曜日であるが、13日が金曜日となる割合は7つの曜日の中で最も高い(688/4800=0.14333...)。

### 修正ユリウス暦

1582年のグレゴリオ暦への改暦後も正教会はユリウス暦を使用し続けていたが、1923年、ギリシャ正教会などいくつかの正教会は修正ユリウス暦と呼ばれる暦を採用した。この暦の導入にあたって、日付をグレゴリウス暦と合わせた上で、置閏法を以下の様に改めた。

1. 西暦年が4で割り切れる年は閏年。
2. ただし、西暦年が100で割り切れる年は平年。
3. ただし、西暦年を900で割った余りが200または600になる年は閏年。

規則の3番目がグレゴリオ暦と異なる。この置閏年では、1暦年は平均365.242 222日となり、暦と季節が1日ずれるまでに約4万3500年を要する。これはグレゴリオ暦より精度がいい。

100で割り切れる年のうち閏年となるのは、グレゴリオ暦では1600年、2000年、2400年、2800年、3200年、3600年...であるが、修正ユリウス暦では2000年、2400年、2900年、3300年、3800年...である。

2800年2月28日までは両方の暦は一致している。しかし、2800年がグレゴリオ暦では閏年なのに対し、修正ユリウス暦では平年になり、そこで日付が1日ずれる。2900年は逆に修正ユリウス暦だけが閏年となり、日付は再び一致する。それ以後は断続的にこのようなずれが生まれ、5200年2月28日を最後に日付が一致することはなくなる。

### 閏週

太陽暦の置閏法には、閏週を挿入する方法もあり得る。

#### 平年を364日とするもの

余日及び閏日を廃止し、1暦年を週の整数倍にする方法で平年は年52週(即ち364日)・閏年53週(即ち371日)とする方法である。ただし、現行のグレゴリオ暦よりも暦と季節のずれが大きくなる点が問題点としてあげられている。これまでに以下の方法が提案された。

- 西暦年数が5の倍数であって40の倍数でないとき、および400の倍数のときは閏週年とする。1暦年の平均の長さは365.242 500日になる。
- 西暦年数が5の倍数のときは閏週年とする。ただし、25の奇数倍および400倍数のときは平年とする。1暦年の平均の長さは365.242 500日になる。
- 62年を1周期として計11回、すなわち6・6・5・6・6・5・6・6・5・6・5年目を閏週年とする。1暦年の平均の長さは365.241 935日になる。

#### 平年を365日とするもの

約29年毎に閏年を設け、その年に1週間の閏週を挿入するという置閏法も可能であり、そのような暦が提案されたこともある(en:Leap week calendar)。この暦の根拠は次の通りである。

7日/(365.242 1892日 - 365日) = 28.903年 (365.242 1892日は2019年の太陽年)

したがって、29年間ごとに7日の閏日(つまり1週間の閏週)を挿入すればよい。1235年につき1日の差が出る。

## 太陰暦

純粋な太陰暦では、そもそも暦と季節とを一致させないので、太陽暦のような閏日はない。その代わり、平均朔望月(29.530 589日)が1日の整数倍でないことで生じる、暦と月相とのずれを補正するための閏日がある。

### ヒジュラ暦

ヒジュラ暦(イスラム暦)での置閏法(または、日付の付け方)には、観測に基づく方法と計算に基づく方法があるが、ここでは後者の方法(en:Tabular Islamic calendar)によるものを示す。

通常は小の月(29日)と大の月(30日)が交互に繰り返す。しかしこれでは1暦月は平均29.5日となり、月相とは少しずつずれていく。そこで、30暦年に11回、小の月に閏日を挿入して大の月とする。これにより1暦月は平均29.530 555日となり、朔望月とほぼ一致する。

閏日を含む年が閏年となり、暦年の長さは平年は354日、閏年は355日である。閏年はヒジュラ紀元の年数を30で割った余りが2、5、7、10、13、16、18、21、24、26、29となる年である。

この方法によるヒジュラ暦では、約2450年で暦と月相が1日ずれる。

## 太陰太陽暦

太陰太陽暦では、暦を季節と月相の双方に一致させなければならない。そのため、理屈の上では2種類の閏がある。ただし、通常は暦と月相を一致させるシステムは閏とは呼ばれず、暦と季節を一致させるための閏のみが存在する。

太陰太陽暦では1暦年の長さは平均朔望月のほぼ整数倍でしか選べない。1平均回帰年は12.368平均朔望月なので、平年は12ヶ月(354日前後)、閏年は閏月が挿入されて13ヶ月(384日前後)となる。

閏年を2.715年に1回入れれば、平均暦年と平均回帰年が一致する。実際に行われた置閏法には、8年に3回、19年に7回(メトン周期)、76年に28回(カリポス周期)などがある。

### 中国暦

中国暦ならびに派生した和暦(以下、まとめて中国暦と書く)では、太陽と月の運行を実際に観測し、季節と暦のずれが最小になるように閏月を入れる。具体的に述べると次のようになる。

暦月は朔日(月齢0を含む日)から次の朔日の前日までとする。冬至(太陽が黄経270°を通過する日)を含む暦月を11月とし、他の各中気(黄道上の太陽の位置が黄経30°の整数倍である日)を含む暦月を1月から12月とする。しかし、中気から中気までは平均すると30.437日で暦月の平均(=平均朔望月)より長いため、中気を含まず名前の付かない暦月が残ることがある。その暦月が閏月となる。例えば、閏月が7月と8月の間に生じたらその月は「閏7月」と呼ばれる。そして、閏月を含む年が閏年である。なお、中気の間隔は一定ではないため1暦月に複数の中気が含まれることがあるので、それに備え優先順位など細則が決められている。

中国暦では、暦と月相の一致も実際の新月に暦月をスタートさせることで実現されている。そのため、29日の小の月と30日の大の月が不規則に出現する。ただしヒジュラ暦のような「平年」といえる状態がないため、これは閏とはいわない。

中国暦では閏年、閏月、月の大小のパターンに規則性はなく、遠い未来の暦は決定できない。その代わり、太陽と月の運行の観測を怠らず正しく運用されれば暦と月相は永久にずれることはない(ただし、太陰太陽暦である以上、暦と季節の間に最大±0.5朔望月=約15日の差はできる)。

## 閏秒

閏年は季節と月相に対する暦のズレを補正するシステムだが、閏秒はこれとはまったく別の目的のためのもので暦とは無関係であり、原子時計により決められる協定世界時と地球の自転で決まる世界時との差を補正するためのシステムである。したがって、閏秒が実施される年であってもその年を閏年とはいわない。

## コンピュータシステムと閏年

コンピュータシステムにおいて閏年を判定するアルゴリズムの記述には誤りがある場合が多く、しばしばこれが原因でシステムは重大な障害を起こす。例えば、「西暦年が4の倍数である年」としかしていなかったり、`year == 2000 || year == 2004`のようにある程度先の閏年しかコードしていないなどが挙げられる。

この他、年数処理のバグにより、年自体を誤って判断することで閏年関係のシステムに重大な障害が発生したケースもある。2010年には二進化十進表現の問題から、2016年と認識されて「閏年である」と誤認したバグが多くみられた。→2010年問題#年数処理のバグ

グレゴリオ暦の閏年は、次のどちらかで正しく判定できる。

### 逐次的な4条件

まず、プログラムで処理しやすくするために閏年の規則を、次の4条件に読み替える。

1. 西暦年が400の倍数である場合、閏年
2. 条件 1. を満たさず(西暦年が400の倍数ではなく)、かつ西暦年が100の倍数である場合、平年
3. 条件 1. と 2. を両方とも満たさず(西暦年が100の倍数ではなく)、かつ西暦年が4の倍数である場合、閏年
4. 条件 1. 〜 3. を全て満たさない場合、平年

Microsoft Excelでは、西暦年が記載されているセルをA1とすると、以下のように記述できる。

- `=IF(MOD(A1,400)=0,"閏年",IF(MOD(A1,100)=0,"平年",IF(MOD(A1,4)=0,"閏年","平年")))`
- `=IFS(MOD(A1,400)=0,"閏年",MOD(A1,100)=0,"平年",MOD(A1,4)=0,"閏年",TRUE,"平年")`(IFS関数が使用可能なバージョン)
- `=SWITCH(0,MOD(A1,400),"閏年",MOD(A1,100),"平年",MOD(A1,4),"閏年","平年")`(SWITCH関数が使用可能なバージョン)

### 1つの論理式

また、閏年の規則は次の1つだけの論理式に読み替えることもできる。

1. 西暦年が、「4の倍数である」かつ「100の倍数でない」または「400の倍数である」ならば閏年、そうでなければ平年

Microsoft Excelや他のプログラム言語では、以下のように記述できる。Microsoft Excelでは西暦年が記載されているセルをA1、他のプログラム言語では西暦年が格納されている変数を`year`, `YEAR`とする。

- `=IF(OR(AND(MOD(A1,4)=0,MOD(A1,100)<>0),MOD(A1,400)=0),"閏年","平年")`(Microsoft Excelなど)
- `year % 4 == 0 && year % 100 != 0 || year % 400 == 0`(C言語など)
- `year Mod 4 = 0 And year Mod 100 <> 0 Or year Mod 400 = 0`(Visual Basicなど)
- `FUNCTION MOD(YEAR 4) = ZERO AND FUNCTION MOD(YEAR 100) NOT = ZERO OR FUNCTION MOD(YEAR 400) = ZERO`(COBOL)

## 誕生日

グレゴリオ暦の場合、2月29日生まれの者の誕生日は閏年に限り到来し、平年に誕生日は存在しない。このため、誕生日を基準に何かを行う場合は、平年ではその前後の日(2月28日か3月1日)を誕生日とみなす必要がある。

日本の法律では、誕生日を基準とした行政手続に限り「みなし誕生日」を2月28日としている。また、年齢計算については、もともと期間の満了は起算日応当日の前日であるところ、起算日を例外的に1日早く初日(出生日)とする関係で、1年間の満了(加齢)も1日早く誕生日の前日となる。このため、2月29日生まれの者は、平閏を問わず、毎年2月28日24時に加齢される(→満年齢、年齢計算ニ関スル法律)。