From: Tadayoshi Funaba Date: 2000-07-06T14:20:25+09:00 Subject: [ruby-dev:10241] Re: date/date2 ふなばです。 At 2000-07-06T11:09:13+0900 (2451731.58973JD), matz@netlab.co.jp (Yukihiro Matsumoto) wrote: matz> 日付クラスについて眺めていたときに以下の疑問に遭遇しました。 matz> * dateとdate2ではAPIの違いの他に、暦計算のアルゴリズムが違っ matz> ています(基準となる日も違う)。このアルゴリズムの性質の違 matz> い(速度、正確さなど)をまとめたページとかは存在しますか? matz> ふなばさんのページに書いてあったようにも思うのですが、ど matz> こだったかな。 http://www.kt.rim.or.jp/~tadf/programming-and-calendar.html#ruby かな? でも、アルゴリズムの性質の違いとか書いてないので、役に立たないと思いま す。 date2 のアルゴリズムは、 Jean Meeus, Astronomical Algorithms, Willmann-Bell,Inc., 1991. にあるものです。ユリウス日とユリウス暦、グレゴリオ暦の変換が、というこ とですけどね。それと、ちょっと本とは違うところもあります。 matz> * date2パッケージに入っているodateはdateとAPI互換ですが、 matz> 使っているアルゴリズムはdate2のものですよね。(確認) そうです。アルゴリズムを変えて、一部、謎めいたメソッドを削ってあります。 matz> * date2パッケージでは浮動小数点計算を使っているので、西暦 matz> 10兆年くらいで誤差が24時間を越えます。これはこんなものな matz> んですよね。そんな日付を扱うはずがないし。 そうですね。限界があります。ですが、十分ではないかと思います。他でも、 つかわれているやりかたですし、特に問題はないと思っています。 matz> * 昔、西暦紀元1年の前は紀元前1年だと聞いたことがあります。 matz> が、dateもdate2も紀元1年の前は紀元0年で、その前が紀元前1 matz> 年としているようです。これはそんなもんなんですか? これは、天文学の流儀ということで、もともとの Meeus のアルゴリズムその ままにしてあります。たとえば、理科年表などに載ってますよ。 matz> なんか、ふなばさんに対する個人的な質問のような気もします。^^;;; 他に答える人もいないですしね :) ふなば ただよし