From: "たけ (tk)" Date: 2001-01-05T16:49:34+09:00 Subject: [ruby-list:26990] Re: Time & Date たけ(tk)です。 Yukihiro Matsumoto さん曰く。 》ちゅーか、TimeってのはそもそもOSの提供するtime_tの置き換えで 》すからね。Timeに関してはこれの上位互換な置き換えだけしか受け 》入れられないでしょう。符号つき64ビットにするのは構いません 》が、負の数を使えないという事実が変えられない以上、1970年以前 》を表現する方法としては期待できないのでは? うーむ、Time というのは「コンピュータ用の内部処理用の時間」であって、 「人間用の時間」ではない。と考えるのが妥当なようですね。人間用の時間クラ スは別に作った方がよい。という結論。 人間用の時間クラスは Date3 に期待しよう。 暦については suchowan さんの下のページが詳しいようです。 http://www.asahi-net.or.jp/~dd6t-sg/ −− 》なぜ負の数が使えないかについては、ふなばさんのページを参照の 》こと。 》 》 http://www.kt.rim.or.jp/~tadf/programming-and-calendar.html  「エラーとして (time_t)-1 を返してくる」実装があるからというのが理由だ とすると、チト情けないですが、「コンピュータ用の時間」と割り切ればそれな りですね。 −− 》考えられる対策としては、OSに頼らず、全世界のタイムゾーンデー 》タベースを持つtime関連のルーチンを自作することですが、私自身 》の手には余ります。これにより1970年という妙な制約を取り除くこ 》とができるのも確かですが、ちょっと勘弁してください。  タイムゾーン指定文字列の変わりに世界標準時からの時間差を表示する方法 「Fri, Jan 05, 2001 at 12:57:35AM +0900」もあるようですね。これなら、デー タベースを持つ必要がない。  タイムゾーン略号→時間差のデータベースは大変そう。同じ略号でも使用期間 によって数値が異なっている場合があるんだぁ・・。 ftp://elsie.nci.nih.gov/pub/tzdata2000h.tar.gz より 》# Zone NAME GMTOFF RULES FORMAT [UNTIL] 》Zone Asia/Singapore 》 6:55:24 - LMT 1880 》 6:55:24 - SMT 1905 Jun # Singapore Mean Time 》 7:00 - MALT 1933 # Malaya Time 》 7:20 - MALT 1942 Feb 15 》 9:00 - JST 1945 Sep 2 》 7:20 - MALT 1950 》 7:30 - MALT 1965 Aug 9 # independence 》 7:30 - SGT 1982 May # Singapore Time 》 8:00 - SGT たけ(tk) ggb03124@nifty.ne.jp http://member.nifty.ne.jp/take_tk