ふなばです。

At 1999-11-24T01:39:47+0900 (2451506.19429JD),
BXQ04723 / nifty.ne.jp (中村暁史 Nakamura Akifumi) wrote:

BXQ04723> delphiのTDateTIme型は、浮動小数点型と等価です。
BXQ04723> 1.0が1日24時間の長さにマップされています。
BXQ04723> 時刻としては0.0が1899 年 12 月 30 日 午前 12:00
BXQ04723> だそうです。考えたことなかったけどマイナスを使えば
BXQ04723> それ以前も表現できますし、はるか未来だって
BXQ04723> 精度は落ちても取り敢えず表現はできるし(時刻じゃなくて
BXQ04723> 時間を表現したいならその心配すらない)。
BXQ04723> 当然ですが演算は異様に楽な模様。

Python にある mxDateTime には、.COMDate() というのがあって、それがそう
いう風なんですが (この午前12時とは、深夜零時のことですよね)、おそらく、
MS な環境一般でよくつかわれているのではないかと想像するのですが、どう
なんでしょう (そもそも COM というのものが、僕はよくわからないのですが)。

BXQ04723> あとdelphiにはTTimeStamp型ってのもあるそうで、
BXQ04723> これは日とミリ秒を別々にintegerで
BXQ04723> カウントする構造体らしく、紀元元年元日から
BXQ04723> プラスマイナス31bit日を表現できるみたいです。
BXQ04723> 三葉虫からは不評を買いそうですね(^^;

同じく mxDateTime も同じような持ちかたしてますね (時刻の持ち方とか違い
ますが)。

ちなみに、僕が実験的に作成している date3 は (といっても、僕は実際に使っ
ていますが)、date/date2 などと同じに、日を単位としていますが、Rational
で表現していて (石塚さんに感謝)、時刻もあつかえます。ここで議論されて
いるような制限はないと思います (ほかに課題はあるけど :-)。

# よく記事を追ってなかったのですが、時刻の書式を考えるのでしたら、ISO
# 8601 形式を検討することをおすすめしたいです。単に、Time にできないの
# で文字列ということならば、整数 (ひょっとして浮動小数点数?) にしてお
# くとか (そのまま、あるいは Time.at に与えられるように調整してエポッ
# ク以前を負にするなど)、あるいは要素を Array にすることもできそうです
# が...。

ふなば ただよし