Issue #14879 has been updated by jeremyevans0 (Jeremy Evans).


Using Ruby 2.6's new timezone support for Time, I think you can get the behavior you want, so that time calculations do not change based on `TZ`.

```ruby
ENV['TZ'] = "Pacific/Auckland"
time = Time.at(Time.parse("5pm"), in: TZInfo::Timezone.get('Pacific/Auckland'))
ENV['TZ'] = "UTC"

time
# => 2019-06-20 17:00:00 +1200
time + 1
# => 2019-06-20 17:00:01 +1200
time.utc_offset
# => 43200
(time + 1).utc_offset
# => 43200
```

----------------------------------------
Bug #14879: Time#+ and Time#- do not preserve receiver's utc_offset if ENV['TZ'] is modified after receiver is created
https://bugs.ruby-lang.org/issues/14879#change-78721

* Author: ioquatix (Samuel Williams)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
I have been having some problems with `Time`. When I add or subtract seconds, sometimes the utc_offset is changed unexpectedly.

```
$ ruby -e 'require "time"; puts Time.parse("5pm NZT")'            
2018-06-29 17:00:00 +1200

$ ruby -e 'require "time"; puts Time.parse("5pm NZT") + 1'
2018-06-29 17:00:01 +1200

$ TZ=UTC ruby -e 'require "time"; puts Time.parse("5pm NZT") + 1'
2018-06-29 17:00:01 +0000
```

This seems like strange behaviour. The `utc_offset` shouldn't change IMHO.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>