lib/tzinfo/timezone_transition_info.rb in tzinfo-0.3.7 vs lib/tzinfo/timezone_transition_info.rb in tzinfo-0.3.8

- old
+ new

@@ -46,11 +46,11 @@ # previous_offset (both TimezoneOffsetInfo instances) and UTC time. # if denominator is nil, numerator_or_time is treated as a number of # seconds since the epoch. If denominator is specified numerator_or_time # and denominator are used to create a DateTime as follows: # - # DateTime.new0(Rational.new!(numerator_or_time, denominator), 0, Date::ITALY) + # DateTime.new!(Rational.new!(numerator_or_time, denominator), 0, Date::ITALY) # # For performance reasons, the numerator and denominator must be specified # in their lowest form. def initialize(offset, previous_offset, numerator_or_time, denominator = nil) @offset = offset @@ -68,10 +68,21 @@ def at unless @at unless @denominator @at = TimeOrDateTime.new(@numerator_or_time) else - @at = TimeOrDateTime.new(DateTime.new0(Rational.new!(@numerator_or_time, @denominator), 0, Date::ITALY)) + r = Rational.new!(@numerator_or_time, @denominator) + + # Ruby 1.8.6 introduced new! and deprecated new0. + # Ruby 1.9.0 removed new0. + # We still need to support new0 for older versions of Ruby. + if DateTime.respond_to? :new! + dt = DateTime.new!(r, 0, Date::ITALY) + else + dt = DateTime.new0(r, 0, Date::ITALY) + end + + @at = TimeOrDateTime.new(dt) end end @at end