From: merch-redmine@... Date: 2019-06-19T19:55:38+00:00 Subject: [ruby-core:93261] [Ruby trunk Bug#14879] Time#+ and Time#- do not preserve receiver's utc_offset if ENV['TZ'] is modified after receiver is created 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: