From: Tadayoshi Funaba Date: 1999-09-27T00:24:59+09:00 Subject: [ruby-dev:7931] Re: [PATCH] strftime "%z", timezone ふなばです。 At 1999-09-26T19:28:35+0900 (2451447.93652JD), eban@os.rim.or.jp (WATANABE Hirofumi) wrote: eban> :|それはそれとしてもともと "%z" なんて strftime には普通ないら eban> :|しく, これを使うのはまずいか. eban> : eban> :ですねえ。互換性に問題があるものを全部取り込んだらきりがない eban> :ですし。 eban> missing/strftime.c を取り込んでしまうのはちょっと大きい気がするし. eban> では Time.now から "+0900" を得るにはどうしたらいいんでしょう? つねに、missing/strftime.c をつかうとなると、locale が気になりますね。 僕は date3 (date2 1.8) で Date.now.zone なんてします (宣伝)。 Date.now.strftime('%FT%T%z') => 1999-09-26T23:35:12+0900 といったこともできますし (タイムゾーンの本質的な問題を解決しているわけ でないが)。 strftime(3) の %z は非標準ですが、このあいだ Date#strftime を改訂した ときに、少ししらべたのですが、非標準なものでも、てんで勝手なわけでなく、 それなりに事実上の標準ができあがっているような気がします。以下は、 Date#strftime が受けつける指定子ですが、わりと多くの実装にあります。 %A, %a, %B, %b, %C, %c, %D, %d, %e, %F, %G, %g, %H, %h, %I, %j, %k, %l, %M, %m, %n, %P, %p, %R, %r, %S, %s, %T, %t, %U, %u, %V, %v, %W, %w, %X, %x, %Y, %y, %Z, %z, %%, %+ もし、自前でもつなら、上のものもみんな揃えられるといいですね。 ごとけんさのですが、%z は、ISO 8601 および RFC 822 の形式として正しい ものが要求されていると思われるので、つねに符合つきの 4桁、もしくは、 "Z" になるのだと思います。で、わたなべさんが欲しいのもこれだと思うです。 なかださんのは、閏秒があるとまずいってのがありそう。 ふなば ただよし