From: nobu@... Date: 2019-12-18T14:03:47+00:00 Subject: [ruby-dev:50896] [Ruby master Bug#15177] 起動した後にTZを変更するとTime#utcがずれることがある Issue #15177 has been updated by nobu (Nobuyoshi Nakada). minirubyだと一致するのは、rubygemsをロードしていないからのようです。 ``` $ TZ=Asia/Tokyo ./bin/ruby --disable=gems -ve "ENV['TZ']='right/Asia/Tokyo';t=Time.at(2<<30);p t;p t.utc" ruby 2.7.0dev (2019-12-18T05:53:19Z master efbc0d499c) [x86_64-linux] 2038-01-19 12:13:41 +0900 2038-01-19 03:13:41 UTC ``` ``` $ TZ=Asia/Tokyo ./bin/ruby --enable=gems -ve "ENV['TZ']='right/Asia/Tokyo';t=Time.at(2<<30);p t;p t.utc" ruby 2.7.0dev (2019-12-18T05:53:19Z master efbc0d499c) [x86_64-linux] 2038-01-19 12:13:41 +0900 2038-01-19 03:14:08 UTC ``` ---------------------------------------- Bug #15177: 起動した後にTZを変更するとTime#utcがずれることがある https://bugs.ruby-lang.org/issues/15177#change-83216 * Author: znz (Kazuhiro NISHIYAMA) * Status: Feedback * 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/