Time と Date についていくつか質問させてください。

1 なぜ Time と Date があるのか?。Time の時刻部分がない物が Date では
ないのか?。

Time は Unix Time をそのまま使っているようだが、プラットフォームの制約を
受け継ぐのは問題ではないか?。Fixnum と Bignum のように内部的に切り替え
ることは出来ないか?。

time = Time.mktime(1970,1,1,9,0,0)	#	OK
time = Time.mktime(1970,1,1,8,59,59)	#	NG

Date は内部的にユリウス日を使っているようだが、ユリウス日は本来は時刻ま
で含んだ実数なので、Date と Time とは理論的には同じ物になるはず。

* UnixTime クラス(内部的には整数?)、Date クラス(内部的にはユリウス
日の整数)、DateTime クラス(内部的にはユリウス日の実数)。で、統合クラ
スとしての Time クラスは、 UnixTime の範囲内であればそれになり、範囲外な
ら DateTime クラスになる。

2 Time から Date へ、またその逆の変換ルーティンは用意されているか?。

3 Date#to_s で "yyyy-mm-dd" という形式の文字列が返るが、その逆変換( 
"yyyy-mm-dd" の形式の文字列を Date 型に変換するメソッド)はあるか?。
(parsedate はオーバースペックなので)。

次善の策として、次のような式が使えるようにならないか?。(配列を受け取る
物)。

time = Time.mktime(ParseDate.parsedate('1999-12-31'))	#	NG
time = Date.new(ParseDate.parsedate('1999-12-31'))	#	NG

4 Time で時刻部分をカットするメソッドはないのか?。

−−

以下は無視して考えた方が無難とは思うが・・。

ユリウス日は時刻によって異なる。(日本時間の21時に日付が変わる)。

ユリウス日は時刻を小数点部分に含んだ実数で表されている。「日付」にとどま
る物ではない。どちらかというと Time そのものに対応するもの。(2001.12.3
13:36:00 JST → 2001.12.3 4:36:00 UT → 2452246.69861 JD → 52246.19861
MJD)。

* 紀元前4713.1.1 12:00:00 からの日数の実数表現。四捨五入で歴日になる。
* 修正ユリウス日はユリウス日から 2400000.5 を引いた数。切り捨てで日付になる。

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