From: Tadayoshi Funaba Date: 1998-10-15T00:17:17+09:00 Subject: [ruby-list:10113] Re: man-1.1/Marshal.html ふなばです。 >待てよ,修正する前にこれは移植性のある動作かどうか確認せねば. ちょっと考えてみました。 たぶん、あつかえるかどうかは、localtime()、gmtime() のつくりによる、と いうことになるんじゃないでしょうか。 time_t をつくるのは time() や mktime() で (システムによっては他にもあ るでしょう)、time() はエラーのとき、-1 を返します。もちろん、エポック は絶対に過去なので、これは関係ないともいえます。 ANSI にある mktime() もエラーのとき、-1 を返します。ただし、Ruby は mktime() をつかっていな いので、これも関係ないともいえるかもしれません。 しかし、ANSI の mktime() の仕様を尊重すれば、time_t で負の経過秒は表現 しないものだと解釈できそうです。 だとすると、Ruby でも禁止にしておくの が筋かしら。 システムによっては、Ruby の at を直しさえすれば、そのまま、あるいはちょっ との修正で負の経過秒はつかえる可能性もありそうです。 でも、一見それらしくみえても、それは正しくないかもしれないので、注意が 必要です。localtime()、gmtime() のつくりによるとすれば、UNIX では zoneinfo のことを考えなければなりません。zoneinfo から 1970 年以前の情 報が得られないと間違えることがあると思います。日本でも夏時間が実施され たことがありますが、実際的には、そういう情報は載ってないと思われます (UTC に限っていえば、とくに影響はなさそうですが)。 ということで、大雑把ですが、ここまで考えたところで、現実的には難しいも のがあると感じています。 # やはり、mktime が負の経過秒をつくらないようにすべきでしょうか。 --Tadayoshi Funaba