From: Takahiro Kambe Date: 2001-01-06T23:46:41+09:00 Subject: [ruby-list:27024] Re: Time & Date In message <20010106180347.D633.GGB03124@nifty.ne.jp> on Sat, 6 Jan 2001 21:23:20 +0900, " =?ISO-2022-JP?B?GyRCJD8kMRsoQg==?= (tk)" wrote: >  * time_t というのは 1970/1/1 0:0:0 GMT から 1/1000 秒毎にインクリメ > ントするカウンタ。で、そのカウンタと実世界の時刻表示との変換ルーティンも > 含めて time_t という。その変換ルーティンにはタイムゾーンのデータベースが > 必要(さらに閏秒のデータも必要)。という理解で良いのでしょうか。 かなりちゃいます。定義として、 o time_t は 1970/1/1 00:00:00 UTC からの秒数を表す、C言語の型です。 32bitの符合あり整数となってる場合が多いです。 UNIXの内部では、 o tickと呼ばれる、1/100秒を典型的な値を元に時間処理はなされています。 言い替えれば 1/100 秒未満の制度はありえないことになります。 カレンダ的な時間は1970/1/1 00:00:00 UTCを起源として管理されていて、こ れはgettimeofday(2)というシステムコールによって、秒数とマイクロ秒で取 得することができます。(DOSは1980年1/1 00:00:00:00だったかな?) UNIXカーネルの内部ではなく、ユーザプログラムが使う支援ライブラリとして、 o time(3)はgettimeofday(2)を使って、time_tの値を返します。 o localtime(3)等のライブラリは、タイムゾーンのデータベースを使って適切 な年月日等の値にtime_tの値を変換します。 が提供されています。 >  * それで「Ruby の Time 型」は「時刻クラスなので本来は1970年の制 > 限がないはず」だが、「その実装に当たって偶々 time_t を利用したために制限 > が出来てしまった」ということですよね。 見方によると思いますが。システムのtime情報を扱うものと考えれば、あたり まえの制限ということになるでしょう。 まぁ、現状のUNIX timeも2038年より前には代替されなければなりませんけどね。 -- 神戸 隆博(かんべ たかひろ) at home