閏年
コンピュータシステムにおいて閏年を判定するアルゴリズムの記述には誤りがある場合が多く、しばしばこれが原因でシステムは重大な障害を起こす。例えば、「西暦年が4の倍数である年」としかしていなかったり、year == 2000 || year == 2004のようにある程度先の閏年しかコードしていないなどが挙げられる。
この他、年数処理のバグにより、年自体を誤って判断することで閏年関係のシステムに重大な障害が発生したケースもある。2010年には二進化十進表現の問題から、2016年と認識されて「閏年である」と誤認したバグが多くみられた。→2010年問題#年数処理のバグ
グレゴリオ暦の閏年は、次のどちらかで正しく判定できる。
ユリウス暦では春分日がずれる問題を解決するため、ローマ教皇グレゴリウス13世は、当時を代表する学者たちを招集して委員会を作り、暦の研究を行わせた。こうして、1582年にグレゴリオ暦が制定された。グレゴリオ暦はその後数百年かけて各国で採用され、現在に至っている。
グレゴリオ暦では、次の規則に従って400年間に97回の閏年を設ける。
西暦年が4で割り切れる年は(原則として)閏年。
ただし、西暦年が100で割り切れる年は(原則として)平年。
ただし、西暦年が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日が閏日であることの由来)を参照。