Issue #15177 has been updated by naruse (Yui NARUSE). あれ、あぁ、そうか、r63848でいじったときにはまぁいいかと思ったんでした……。 期待は分かりますがright/*と非right/*を混ぜて使うのが実用的な用途とは思えないのであんまり…って感じですね… ---------------------------------------- Bug #15177: 起動した後にTZを変更するとTime#utcがずれることがある https://bugs.ruby-lang.org/issues/15177#change-74359 * Author: znz (Kazuhiro NISHIYAMA) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- 起動時に `TZ` を `right/Asia/Tokyo` にしていると `Time#utc` でローカルタイムと同じ時分秒になりますが、 `TZ=Asia/Tokyo` で起動してから `ENV['TZ']='right/Asia/Tokyo'` で変更すると `Time#utc` の結果がうるう秒のぶんだけずれます。 ``` $ TZ=Asia/Tokyo ruby -ve "ENV['TZ']='right/Asia/Tokyo';t=Time.at(2<<30);p t;p t.utc" ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux] 2038-01-19 12:13:41 +0900 2038-01-19 03:14:08 UTC $ TZ=right/Asia/Tokyo ruby -ve "t=Time.at(2<<30);p t;p t.utc" ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux] 2038-01-19 12:13:41 +0900 2038-01-19 03:13:41 UTC % TZ=Asia/Tokyo ruby -ve "t=Time.at(2<<30);p t;p t.utc" ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux] 2038-01-19 12:14:08 +0900 2038-01-19 03:14:08 UTC ``` -- https://bugs.ruby-lang.org/