From: blmlcu@... Date: 2015-03-07T16:21:39+00:00 Subject: [ruby-core:68453] [Ruby trunk - Bug #10677] Regression: Time#parse no longer automatically converts to localtime Issue #10677 has been updated by Luca B. Yui NARUSE wrote: > After 1.9 whose time objects can save its timezone, I welcome the change, even if it's backward incompatible. However, I noticed that although the object is meant to save its own timezone, it does not return it any more: ```ruby require 'time' # 1.9.3 -> 2.1.5 | 2.2.0 and 2.2.1 # ---------------|----------------- p Time.parse("2014-12-31 20:16:32 -0400").zone # "GMT" | nil ENV['TZ'] = "Australia/Melbourne" # | p Time.parse("2014-12-31 20:16:32 -0400").zone # "AEDT" | nil ``` It seems to me that to be consistent with the spirit of the change, `#zone` should still return the same value. Is this a bug? If not, what is the reason? ---------------------------------------- Bug #10677: Regression: Time#parse no longer automatically converts to localtime https://bugs.ruby-lang.org/issues/10677#change-51801 * Author: Parker M * Status: Rejected * Priority: Normal * Assignee: Zachary Scott * ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- In Ruby 2.1 and before, `Time#parse` automatically converted to the localtime: Ruby 2.1: ~~~ruby >> require 'time' => true >> ENV['TZ'] = 'Australia/Melbourne' => "Australia/Melbourne" >> Time.parse("2014-12-29 20:16:32 -0400") => 2014-12-30 11:16:32 +1100 ~~~ But in Ruby 2.2, this is not the case: ~~~ruby >> require 'time' >> ENV['TZ'] = 'Australia/Melbourne' >> Time.parse("2014-12-29 20:16:32 -0400") => 2014-12-29 20:16:32 -0400 # !! >> Time.parse("2014-12-29 20:16:32 -0400").localtime => 2014-12-30 11:16:32 +1100 ~~~ This seems to be a regression, as this is a change in default behaviour without a `MAJOR` version bump, violating semver. -- https://bugs.ruby-lang.org/