ふなばです。

At 2001-02-08T13:36:31+0900 (2451948.69203JD),
maki / inac.co.jp (TAKAHASHI Masayoshi) wrote:

maki> == 理由

maki> 現状、文字列で書かれた日付表現などは ParseDate::parsedate で
maki> 配列に変換してからTimeオブジェクトに変換する必要がある。これは
maki> 頻繁に想定される状況なのに、自前で書くのはわずらわしい。
maki> また、誤りも起こりやすい。

まったくその通りです。でも、こういうのって難しい。どうやっても失なわれ
る情報があるわけで。ある程度みんなが納得できるものが提供できるのであれ
ば、やるべきなんでしょうね。

maki> == 想定される利用方法

maki> : 例1
maki>      メールやニュースやHTTPなどのDate:欄などに書かれた文字列から
maki>      Timeオブジェクトを作る。

とりあえず、、RFC 822、RFC 850、(as)?ctime(3) の、それと ISO 8601 の一
部を必須にしましょう。date(1) は保証できないだろうな。

maki> == 検討事項

maki>  (1) メソッド名と属するクラスは?
maki>       (a) ParseDate::to_time
maki>       (b) Time::str2time
maki>       (c) Time::parse
maki>       (d) その他

とりあえず (c) に一票。で、実装に必要な基本機能は parsedate で用意する。
parsedate を生かす方向で考えたい。もともと、parsedate は date のために
造られたと思うし (最初の頃は、年月日しか返さなかった)、date のことも忘
れないようにしないと。

maki>  (3) 解釈できない文字列はどうするのか?
maki>       (a) 例外をあげる
maki>       (b) nilを返す
maki>       (c) 無理矢理Timeオブジェクトにする(?)
maki>       (d) その他

(a) かな?

maki>  (4) タイムゾーン(または時差)がない・あるいは分からない場合、
maki>      どのタイムゾーンで解釈するか?
maki>       (a) UTCで解釈する
maki>       (b) localtimeで解釈する
maki>       (c) 別途タイムゾーンの情報を与える
maki>           (例えば to_time(string, timezone=nil) みたいな感じで。)
maki>           (nilの場合はUTCかlocalのタイムゾーンかを決める必要あり。)
maki>       (d) localtimeとgmtimeのようにメソッドを分ける
maki>       (e) その他

(b) か (c) かな。(c') で、タイムゾーンのデータベースを選ん与える、って
のもあり?  そうすると、利用者があとからどうにでもできる (面倒かも)。

ふなば ただよし