summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2021-03-20 14:43:10 +0900
committernagachika <nagachika@ruby-lang.org>2021-03-20 14:43:10 +0900
commita85982553935b81de02eb8cca9476df5d4442fd8 (patch)
tree476f7e4cb376356a1ac702c20f83dbb56d96f03f /test
parent82d72f14e7071218f3fd710f770d1ba31390f027 (diff)
merge revision(s) 276f6a225d18561cbe5282b798cb4e416c66079f,95bef7b69a6fb42687a6200b338060be307259f5: [Backport #17352]
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). --- test/ruby/test_time_tz.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) Subsecond of Time::tm should be 0 --- time.c | 1 + 1 file changed, 1 insertion(+)
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 7f0a306783..5ee12e4dbd 100644
--- a/test/ruby/test_time_tz.rb
+++ b/test/ruby/test_time_tz.rb
@@ -749,6 +749,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