Actions
Bug #15177
closed起動した後にTZを変更するとTime#utcがずれることがある
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
Tags:
Description
起動時に 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
Updated by naruse (Yui NARUSE) about 6 years ago
その辺最近いじったのでtrunkの動作が期待通りか試して頂けますか
Updated by znz (Kazuhiro NISHIYAMA) about 6 years ago
trunk でも同じでした。
期待している値としては t と t.utc で同じ分秒になることですが、13:41と14:08のどちらが良いかは特に意見がありません。
% TZ=Asia/Tokyo ruby -ve "ENV['TZ']='right/Asia/Tokyo';t=Time.at(2<<30);p t;p t.utc"
ruby 2.6.0dev (2018-10-09 trunk 64976) [x86_64-linux]
2038-01-19 12:13:41 +0900
2038-01-19 03:14:08 UTC
Updated by naruse (Yui NARUSE) about 6 years ago
あれ、あぁ、そうか、r63848でいじったときにはまぁいいかと思ったんでした……。
期待は分かりますがright/*と非right/*を混ぜて使うのが実用的な用途とは思えないのであんまり…って感じですね…
Updated by nobu (Nobuyoshi Nakada) about 6 years ago
なぜかminirubyだと一致するようです。
$ TZ=Asia/Tokyo ./bin/ruby -ve "ENV['TZ']='right/Asia/Tokyo';t=Time.at(2<<30);p t;p t.utc"
ruby 2.5.2p91 (2018-10-01 revision 64893) [x86_64-linux]
2038-01-19 12:13:41 +0900
2038-01-19 03:14:08 UTC
$ TZ=Asia/Tokyo ./miniruby -ve "ENV['TZ']='right/Asia/Tokyo';t=Time.at(2<<30);p t;p t.utc"
ruby 2.5.2p91 (2018-10-01 revision 64893) [x86_64-linux]
2038-01-19 12:13:41 +0900
2038-01-19 03:13:41 UTC
Updated by naruse (Yui NARUSE) almost 5 years ago
- Status changed from Open to Feedback
Updated by shyouhei (Shyouhei Urabe) almost 5 years ago
@naruse (Yui NARUSE) これ何がどうFeedbackなんですか?ここまでのやりとりだと @znz (Kazuhiro NISHIYAMA) は要求されている情報を既にもれなく答えているとしか読めませんが。
Updated by nobu (Nobuyoshi Nakada) almost 5 years ago
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
Updated by akr (Akira Tanaka) almost 5 years ago
- Status changed from Feedback to Closed
Applied in changeset git|29e31e72fb5a14194a78ec974c4ba56c33ad8d45.
ruby_reset_timezone resets leap_second_info.
[Bug #15177]
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0Like0