たけ(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/Singapore6:55:24 -		LMT		18806:55:24	-		SMT		1905 Jun # Singapore Mean Time7:00	-		MALT	1933	 # Malaya Time7:20	-		MALT	1942 Feb 159:00	-		JST		1945 Sep  27:20	-		MALT	19507:30	-		MALT	1965 Aug  9 # independence7:30	-		SGT		1982 May # Singapore Time8:00	-		SGT

たけ(tk) ggb03124 / nifty.ne.jp
http://member.nifty.ne.jp/take_tk