From: Takashi SUGA Date: 2002-02-05T19:37:57+09:00 Subject: [ruby-list:33767] Re: when.exe の Ruby 化 (Re: newdate) 須賀です。 複数の暦法を順次用いたような暦に対応するために ListCalendar という クラスを定義する予定です(7年前に作りかけていた C++ の頃から存在)。 国名, 年号(*), 統治者名 がキーになるのですが、逆変換の都合もあり、 ユーザから見える形としては配列にする予定でいます(下記の例で言うなら、 終了日のJDも必要なのにたいていの場合次の開始日の前日が終了日に一致 するので冗長、同じ年号が複数回使われている場合があって年号だけでは ハッシュのキーにならない...など) 仕様案のとおり、年のはじめが1月1日でない暦法にも対応するのですが、 ListCalendar.new の引数に、 "たけ(tk)" => ["グレゴリオ暦", 誕生日のJD, "年初はEpoch"], なんてユーザが指定を付け加えるだけで、 Date.new("たけ(tk)", xx) # たけ(tk)さんの xx歳の誕生日のオブジェクト が使えるようにするつもりです([]内の部分はまだ適当)。 (*) 必ずしも元号には限らない Key もあり得るので、少し広い意味を 指す言葉としてwhen.exeでは「年号」ということにしています。 >  これって、元号でも良いようにすれば使いやすそうですね。 > > Date.new( "昭和" , 20 , 8 , 15 ) > >  元号→暦法のハッシュがあれば簡単に実現できそう。 > > GENGO_REKIHOU = { > .... > "明治" => ["太陰暦/太陽暦" , 開始日のJD , 2番目の暦の開始日] , > "大正" => ["太陽暦" , 開始日のJD] , > "昭和" => ["太陽暦" , 開始日のJD] , > "平成" => ["太陽暦" , 開始日のJD] , > } -- ////////// 須賀 隆 ///////////////////////// SGB02104@nifty.com //////// // http://www.asahi-net.com/~dd6t-sg/ mailto:suchowan@box.email.ne.jp //