summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2020-11-26 21:16:19 -0800
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-11-28 15:41:41 +0900
commit276f6a225d18561cbe5282b798cb4e416c66079f (patch)
treeba5e570675f91ccf97f829454e5fcc7e6cb9870a /test
parentd80226e7bd801fcbccf71f19ba373b7baf71a49e (diff)
Don't double fractional seconds when passing timezone object to Time.new
I found that fractional seconds were doubled when using the timezone feature of Time in Sequel's named_timezones extension (which uses TZInfo for the timezone object), and traced the problem to this code. There is no subsecx being modified in the utc_to_local call below this, and I'm not sure why you would want to add in the fractional seconds unless you assumed the timezone conversion would drop the existing fractional seconds (TZInfo doesn't drop fractional seconds).
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/3821
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_time_tz.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/test/ruby/test_time_tz.rb b/test/ruby/test_time_tz.rb
index c9c2b77115..dade0bff16 100644
--- a/test/ruby/test_time_tz.rb
+++ b/test/ruby/test_time_tz.rb
@@ -752,6 +752,16 @@ class TestTimeTZ::DummyTZ < Test::Unit::TestCase
def self.make_timezone(tzname, abbr, utc_offset, abbr2 = nil, utc_offset2 = nil)
TestTimeTZ::TZ.new(tzname, abbr, utc_offset, abbr2, utc_offset2)
end
+
+ def test_fractional_second
+ x = Object.new
+ def x.local_to_utc(t); t + 8*3600; end
+ def x.utc_to_local(t); t - 8*3600; end
+
+ t1 = Time.new(2020,11,11,12,13,14.124r, '-08:00')
+ t2 = Time.new(2020,11,11,12,13,14.124r, x)
+ assert_equal(t1, t2)
+ end
end
begin