From: Tadayoshi Funaba Date: 1999-02-21T21:51:57+09:00 Subject: [ruby-dev:5428] Re: Time class ふなばです。 >>> Sat, 20 Feb 1999 01:43:36 +0900 の刻に 「matz」、すなわち >>> matz@netlab.co.jp(Yukihiro Matsumoto) 氏曰く matz> * gawk同様strftimeがformatの長さの1024倍なら(もっと小さく matz> ても良い?),成功したとみなす 考えてみると、タイムゾーンだけじゃなくて、locale 依存ってのもあるので、 本当の上限ってないかもしれないですね。それでも、%? が 2048 文字にもな るかもしれないというのは大袈裟かなと思いますが、 とりあえず、GAWK に倣 うってことで :-) matz> marshalについて補足します. matz> 現在のtimeのmarshalのフォーマットはsecとusecをそれぞれ32bit整数とし matz> て8バイト長のバッファに書き出しています.これを matz> year1 year2 mon mday hour min sec usec1 usec2 usec3 usec4 matz> という11バイト長のフォーマットに変更しました.これにより, matz> time_tが64bitのプラットフォームで,2038年1月19日以降の日付を matz> 扱える場合でもそのままmarshalに書き出せるようになります(えー matz> と,西暦67435年まではいけますね).また,副作用として閏秒の影 matz> 響を受けにくくなります. ということは、UTC で、年は-=1900ということですね。可搬性を考えれば、で きるだけ一般的な表現にしておくのがよいと思いますが、Ruby の Marshal が どれだけ、その要求に応えられるものかにもよりますよね。あまり、期待でき ないのであれば、64ビット+32ビットそのまま書くので十分で、 そうすれば失 なわれるものはないと言えるわけですし。 # 結構長いわりにはスカスカですよね。ビット単位で割付れば同じ8バイトでも # 年に18ビット確保できるなあ、とか考えたりして。僕ってケチなのかしら :-) ふなば ただよし