Entry

実在しなかったのにエクセルが日付と認識する日

 ユリウス暦と実際の公転周期との差は、365.25-365.24220とすれば、0.0078日/年だから、1000年に7.8日ずれるということになる。
1000÷7.8≒128.2
つまり、約128.2年に1日がずれる、というわけである。
 ちなみに、2013年年央の太陽年は、約365.242189日とのことで、ウィキペディアの「グレゴリオ暦」ではこの数値を元に計算しているので、「ユリウス暦では128.03年に1日ずれる」旨記している。
 グレゴリオ暦採用に際しては1582年10月4日の翌日を10月15日とした上で、将来について、400年に97回の閏年を置くこととした。100の倍数の年は原則として閏年とせず、ただし400年の倍数の年は閏年とする。採用以後でいうと、1600年は閏年、1700年、1800年、1900年は閏年ではなく、2000年は閏年だった。今後でいうと、西暦2100年、2200年、2300年は、4の倍数であるにもかかわらず、閏年とはしないこととしている。
 このやり方では、1年の平均日数は、X={(365×400)+97}÷400と計算できるから、
X=365.2425日となる。公転周期(西暦1900年)の365.2422との差は0.00028日
これでも、1万年に3日ほど(2.8日)は,ずれる計算である。約3571年に1日。西暦5000年くらいには(今閏年とされる予定の年のうちで)閏年としない年を新たに決めることになるのかもしれない。太陽年は年々短くなっているので、実際にはもっと速まる可能性もある。まあ、私たちには関わりのないことだが。

 さて、マイクロソフトの表計算ソフトであるエクセルの日付は1900年1月1日から開始している(同日をシリアルナンバー1としている)が、エクセルで、セルにたとえば2100/2/29と半角入力すると、実際にはない日付であるため、この入力に対して日付とは認識せず、文字列と認識する。2000/2/29はもちろん実在の日であるから、日付と認識する。
 ところが、セルに1900/2/29と半角入力すると、なぜか日付と認識してしまう。マイクロソフトによると、
「Excel の日付システムは、他の表計算ソフトとの互換性を完全に満たすように定義されています。
しかしながら、この日付システムにおいて、1900年は事実に反して閏 (うるう) 年として解釈されています。」とのこと。
 わかったような、わからないような説明だが、要するに、1900年に関しては、事実と違う解釈が施されている(つまり間違っている)ということだろう。エクセルの日付のシリアルナンバーは1900年1月1日を1としている。同年1月、2月を起算日として2月29日以降にまたぐ日数計算は、グレゴリオ暦に従う正しい計算に対して1だけ過剰になる。