2月29日問題(にがつにじゅうくにちもんだい)
コンピュータが2月29日を認識できないことによって発生する誤動作
西暦2000年は「うるう年」である。前回のうるう年は1996年、そして次回のうるう年は2004年である。このように、うるう年は4年に1度のペースでやってくることになっている。
4年に1度うるう年を設けるのは、暦(カレンダー)と季節(地球の公転運動)を一致させるためである。1年を365日と決めたとき、季節とは0.2422日だけずれる。そこで、4年に1回をうるう年とするユリウス暦を使うことによって、このズレを減らすことができるのである。
しかし、ユリウス暦では太陽年よりも0.0078日分だけ長くなる。これは、400年で約3日分(0.0078×400=3.12)に相当する。この補正をするために400年のうち3回はうるう年を省くことになっている。これが現在使われているグレゴリオ暦である。
つまり、グレゴリオ暦では1900年や2100年などは、4で割り切れる年であるがうるう年とはならない。西暦2000年がうるう年なのは、4で割り切れるからという単純な理由ではなく、このように込み入った事情があるのである。
さて、コンピュータが日付を処理する場合、うるう年に存在する2月29日は特別な処理が必要である。プログラムを記述するとき、特別な西暦処理をうっかり誤ったり、または十分なテストができずにバグがそのまま残っている可能性が高いと考えられる。その結果、西暦2000年の2月29日は存在しないとして処理を進めてしまうかもしれない。
(2000.02.25更新)
- 2月29日問題のページへのリンク