木村です。

	In: [ruby-list:6139] 

>|#Date#periodで使ってるのってzellerの公式のように見えるんですが…
>
>そうなんですね.ものを知らないのが分かってしまうな.

すみません、訂正です^^;。 zellerの公式は

   q + int(26(m+1)) + K + int(K/4) + int(J/4) - 2J

です。ここで

  J 年の上二桁
  K 年の下二桁
  m 月
  q 日

です。

この式の変形

    (y + int(y/4) - int(y/100) + int(y/400) + int(2.6m + 1.6) + d) mod 7

が、ある年月日が何曜日であるかを求めるのに使われます。


>知らないことを知ったかぶりするほど恐いことはないので,必要な
>情報が集まった時点で対応することにします.^^;;;

とりあえず、修正ユリウス日(MJD)はグレゴリオ暦の年月日から以下の
ようにして求められるそうです(フリーゲルの公式というのだとか)。

def getMJD(y, m, d)
  if m < 3
    y -=1
    m += 12
  end

  return  (y*365.25).to_i - (y/100).to_i + (y/400).to_i + (30.59*(m-2)).to_i + d - 678912
end

# 検索エンジン(goo)で「ユリウス日」で検索したら幾つか見つかりました

私が作るかどうかはともかく、資料がある程度まとまったらまた出します。

おまけ。

日本でグレゴリオ暦への切り替えは明治五年十二月二日の翌日を明治六
年一月一日にすることで行ったそうです。つーことで、切り替えが五年
か六年かというのは資料によって違うみたいです^^;

-- 
木村浩一
            May the source be with you.
    e-mail kbk / kt.rim.or.jp
           kkimura / pure.cpdc.canon.co.jp