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/