4で割り切れる年でも閏年とは限らない
今日は2月29日なので閏年の話。
久々に漫画以外の記事です。
■現在の閏年
今年は閏年で本日は2月29日。
そんなわけでうろ覚えメモレベルのお話をします。
一般的に閏年とは4年に一度、2月29日という日を存在させることによって
1年を366日にしています。
なんでこんなことをするかというと厳密には1年は365日ではないからです。
でも、そもそも1年って何のことでしょうか?
1年とは、地球の公転周期のことです。
もっと砕けていうと、地球が太陽の周りを1回転する期間のことです。
それが1年です。で、先ほど言ったように1年は365日ジャストというわけではなく、
1年は約365.24日です。その誤差を補うために閏年は存在します。
実際に計算してみます。
365.24 * 4 = 1460.96
そんなわけで、4年経つと0.96日の誤差が生じるわけなんですね。
■グレゴリオ暦
日本で採用されているグレゴリオ暦によると閏年は、
・西暦年が4で割り切れる年は閏年
・ただし、西暦年が100で割り切れる年は閏年にはならない
・ただし、西暦年が400で割り切れる年は閏年
例えば西暦1900年は、4で割り切れますが、100で割り切れてしまうので閏年にはなりません。
そして西暦2000年は、4で割り切れて、100でも割り切れますが、400で割り切れるので閏年になります。
■閏年を判定するアルゴリズム
閏年の判定はプログラミングの練習問題としてもよく使用されています。
ちなみにちょっと前に公開した当サイトの漫画雑誌発売日チェッカーも
ちゃんと閏年の判定をさせています。そんなわけで最期はFlashのActionScriptを載せておきます。
function CheckLeapYear() { if (!(y % 400)) { return true; } else if (!(y % 100)) { return false; } else if (!(y % 4)) { return true; } else { return false; } } day_count = new Array(31,28,31,30,31,30,31,31,30,31,30,31,31); dateDay = new Date(); var y = dateDay.getFullYear(); //年を取得 var m = dateDay.getMonth()+1; //月を取得 var d = dateDay.getDate(); //日を取得 var yb = dateDay.getDay(); //曜日を取得 if (CheckLeapYear() == true) {day_count[1]++;} //閏年の判定