From: samuel@... Date: 2018-06-29T23:07:09+00:00 Subject: [ruby-core:87704] [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 ioquatix (Samuel Williams). By the way, perhaps it's not clear, but `utc_offset` is not a time zone, nor is `Time.zone`, because just stating `MST` is not enough to disambiguate. You need to specify `Canada/Saskatchewan` (MST only) or `Canada/Mountain` (MST/MDT). Practically speaking, the best computation we have for `utc_offset` is the time zone database (i.e. government rules), a specific date+time in UTC, and a specific zone name from said database. That can then give us the `utc_offset`. Since several time zones might map to the same UTC offset, it's not easy to go in reverse without additional help. ---------------------------------------- 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-72727 * 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: