From 34b27701eee304d1f8bae12c841080e2b6f3b794 Mon Sep 17 00:00:00 2001 From: Andrew White Date: Mon, 9 Mar 2015 13:48:55 +0000 Subject: Revert "Take DST into account when locating TimeZone from Numeric." Reverting this as it's not the implementation that we would like it to be. This is being used inside of ActiveSUpport::TimeZone[] and it's unaware of the context in which to find the timezone period so the timezone found changes depending on whether DST is in effect for the current period. This means that `'2001-01-01'.in_time_zone(-9)` changes from winter/summer even though it's the same date that we're trying to convert. Since finding timezones by numeric offsets is a bit hit and miss we should introduce a new API for finding them which supplies the date context in which we want to search and we should probably also deprecate the finding of timezones via the [] method, though this needs further discussion. This reverts commit 2cc2fa3633edd96773023c6b09d07c7b9d9b841d. --- activesupport/CHANGELOG.md | 10 ---------- activesupport/lib/active_support/values/time_zone.rb | 8 +------- activesupport/test/core_ext/time_with_zone_test.rb | 7 ------- 3 files changed, 1 insertion(+), 24 deletions(-) (limited to 'activesupport') diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index f5fa70494a..43fb87f203 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -1,13 +1,3 @@ -* Take DST into account when locating TimeZone from Numeric. - - When given a specific offset, use the first result found where the - total current offset (including any periodic deviations such as DST) - from UTC is equal. - - Fixes #15209. - - *Yasyf Mohamedali* - * Added `#without` on `Enumerable` and `Array` to return a copy of an enumerable without the specified elements. diff --git a/activesupport/lib/active_support/values/time_zone.rb b/activesupport/lib/active_support/values/time_zone.rb index ab6a78052c..da39f0d245 100644 --- a/activesupport/lib/active_support/values/time_zone.rb +++ b/activesupport/lib/active_support/values/time_zone.rb @@ -239,7 +239,7 @@ module ActiveSupport end when Numeric, ActiveSupport::Duration arg *= 3600 if arg.abs <= 13 - all.find { |z| z.utc_total_offset == arg.to_i } + all.find { |z| z.utc_offset == arg.to_i } else raise ArgumentError, "invalid argument to TimeZone[]: #{arg.inspect}" end @@ -285,12 +285,6 @@ module ActiveSupport end end - # Returns the offset of this time zone from UTC in seconds, - # taking DST into account. - def utc_total_offset - tzinfo.current_period.utc_total_offset if tzinfo - end - # Returns the offset of this time zone as a formatted string, of the # format "+HH:MM". def formatted_offset(colon=true, alternate_utc_string = nil) diff --git a/activesupport/test/core_ext/time_with_zone_test.rb b/activesupport/test/core_ext/time_with_zone_test.rb index 0f5522b712..92c233d567 100644 --- a/activesupport/test/core_ext/time_with_zone_test.rb +++ b/activesupport/test/core_ext/time_with_zone_test.rb @@ -867,13 +867,6 @@ class TimeWithZoneMethodsForTimeAndDateTimeTest < ActiveSupport::TestCase end end - def test_in_time_zone_with_dst - travel_to(Time.utc(2014, 5, 20, 4, 59, 59)) - time = Time.now.in_time_zone(-4) - assert_equal (-4*3600), time.time_zone.utc_total_offset - travel_back - end - def test_in_time_zone_with_invalid_argument assert_raise(ArgumentError) { @t.in_time_zone("No such timezone exists") } assert_raise(ArgumentError) { @dt.in_time_zone("No such timezone exists") } -- cgit v1.2.3