In article <20040209162413ALQP-G / hoppeta.com>,
  "Kawaji, Shinya" <kawaji / hoppeta.com> writes:

> $ ruby -e 't = Time.now; p t,t.utc'
> Mon Feb 09 07:14:22 UTC 2004
> Mon Feb 09 07:14:22 UTC 2004

うぅ、間違えました。utc は破壊的なのでこれでは私の意図した検査にはなり
ません。getutc にすれば私の意図した検査になります。

ちなみに、glibc では

% TZ=/usr/share/zoneinfo/right/Asia/Tokyo ruby -e 't = Time.now; p t,t.getutc,t.tv_sec'
Mon Feb 09 16:48:06 JST 2004
Mon Feb 09 07:48:06 UTC 2004
1076312908

% TZ=/usr/share/zoneinfo/Asia/Tokyo ruby -e 't = Time.now; p t,t.getutc,t.tv_sec'      
Mon Feb 09 16:48:28 JST 2004
Mon Feb 09 07:48:28 UTC 2004
1076312908

というようになります。glibc は UTC の変換でも地方時の閏秒情報を使用す
るのでずれません。というか、GMT にはそもそもアクセスしないんですが。

> $ ruby -ryaml -ve"t=Time.now;d=YAML.dump(t);puts t,d,YAML.load(d),YAML.load(d).utc"; date
> ruby 1.9.0 (2004-02-06) [i386-openbsd3.4]
> Mon Feb 09 16:14:10 JST 2004
> --- 2004-02-09 16:14:10.235078 +09:00
> Mon Feb 09 16:13:48 JST 2004
> Mon Feb 09 07:14:10 UTC 2004
> Mon Feb  9 16:14:10 JST 2004

こちらは私の意図した検査になっています。やはり UTC にすると秒が戻りま
すね。

UTC における
Mon Feb 09 07:14:10 UTC 2004 というのは
Mon Feb 09 16:14:10 JST 2004 と同じ時刻ですから、その点では正しく元に
戻っているといえなくもありません。

> $ ls -la /usr/share/zoneinfo/GMT
> -r--r--r--  10 root  bin  56 Feb  6 23:07 /usr/share/zoneinfo/GMT
>
> このファイルは元のまま使っています。
> (先日 make build しました)
>
> 以下の Makefile を編集してビルドすればよかったですかね?
> http://www.openbsd.org/cgi-bin/cvsweb/src/share/zoneinfo/Makefile

そのへんのビルドの方法はよくわかりません。ただ、もし
zoneinfo/right/GMT があるならそれを zoneinfo/GMT にコピーすれば試せる
かも。
-- 
[田中 哲][たなか あきら][Tanaka Akira]