Class: TZInfo::TimezoneTransitionInfo
- Inherits:
-
Object
- Object
- TZInfo::TimezoneTransitionInfo
- Defined in:
- lib/tzinfo/timezone_transition_info.rb
Overview
Represents an offset defined in a Timezone data file.
Instance Attribute Summary collapse
-
#offset ⇒ Object
readonly
The offset this transition changes to (a TimezoneOffsetInfo instance).
-
#previous_offset ⇒ Object
readonly
The offset this transition changes from (a TimezoneOffsetInfo instance).
Instance Method Summary collapse
-
#==(tti) ⇒ Object
Returns true if this TimezoneTransitionInfo is equal to the given TimezoneTransitionInfo.
-
#at ⇒ Object
A TimeOrDateTime instance representing the UTC time when this transition occurs.
-
#eql?(tti) ⇒ Boolean
Returns true if this TimezoneTransitionInfo is equal to the given TimezoneTransitionInfo.
-
#hash ⇒ Object
Returns a hash of this TimezoneTransitionInfo instance.
-
#initialize(offset, previous_offset, numerator_or_time, denominator = nil) ⇒ TimezoneTransitionInfo
constructor
Creates a new TimezoneTransitionInfo with the given offset, previous_offset (both TimezoneOffsetInfo instances) and UTC time.
-
#inspect ⇒ Object
Returns internal object state as a programmer-readable string.
-
#local_end ⇒ Object
A TimeOrDateTime instance representing the local time when this transition causes the previous observance to end (calculated from at using previous_offset).
-
#local_start ⇒ Object
A TimeOrDateTime instance representing the local time when this transition causes the next observance to start (calculated from at using offset).
Constructor Details
#initialize(offset, previous_offset, numerator_or_time, denominator = nil) ⇒ TimezoneTransitionInfo
Creates a new TimezoneTransitionInfo with the given offset, 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.new!(Rational.send(:new!, numerator_or_time, denominator), 0, Date::ITALY)
For performance reasons, the numerator and denominator must be specified in their lowest form.
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/tzinfo/timezone_transition_info.rb', line 55 def initialize(offset, previous_offset, numerator_or_time, denominator = nil) @offset = offset @previous_offset = previous_offset @numerator_or_time = numerator_or_time @denominator = denominator @at = nil @local_end = nil @local_start = nil end |
Instance Attribute Details
#offset ⇒ Object (readonly)
The offset this transition changes to (a TimezoneOffsetInfo instance).
30 31 32 |
# File 'lib/tzinfo/timezone_transition_info.rb', line 30 def offset @offset end |
#previous_offset ⇒ Object (readonly)
The offset this transition changes from (a TimezoneOffsetInfo instance).
33 34 35 |
# File 'lib/tzinfo/timezone_transition_info.rb', line 33 def previous_offset @previous_offset end |
Instance Method Details
#==(tti) ⇒ Object
Returns true if this TimezoneTransitionInfo is equal to the given TimezoneTransitionInfo. Two TimezoneTransitionInfo instances are considered to be equal by == if offset, previous_offset and at are all equal.
110 111 112 113 |
# File 'lib/tzinfo/timezone_transition_info.rb', line 110 def ==(tti) tti.respond_to?(:offset) && tti.respond_to?(:previous_offset) && tti.respond_to?(:at) && offset == tti.offset && previous_offset == tti.previous_offset && at == tti.at end |
#at ⇒ Object
A TimeOrDateTime instance representing the UTC time when this transition occurs.
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/tzinfo/timezone_transition_info.rb', line 68 def at unless @at unless @denominator @at = TimeOrDateTime.new(@numerator_or_time) else r = Rational.send(: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 |
#eql?(tti) ⇒ Boolean
Returns true if this TimezoneTransitionInfo is equal to the given TimezoneTransitionInfo. Two TimezoneTransitionInfo instances are considered to be equal by eql? if offset, previous_offset, numerator_or_time and denominator are all equal. This is stronger than ==, which just requires the at times to be equal regardless of how they were originally specified.
121 122 123 124 125 126 |
# File 'lib/tzinfo/timezone_transition_info.rb', line 121 def eql?(tti) tti.respond_to?(:offset) && tti.respond_to?(:previous_offset) && tti.respond_to?(:numerator_or_time) && tti.respond_to?(:denominator) && offset == tti.offset && previous_offset == tti.previous_offset && numerator_or_time == tti.numerator_or_time && denominator == tti.denominator end |
#hash ⇒ Object
Returns a hash of this TimezoneTransitionInfo instance.
129 130 131 |
# File 'lib/tzinfo/timezone_transition_info.rb', line 129 def hash @offset.hash ^ @previous_offset.hash ^ @numerator_or_time.hash ^ @denominator.hash end |
#inspect ⇒ Object
Returns internal object state as a programmer-readable string.
134 135 136 |
# File 'lib/tzinfo/timezone_transition_info.rb', line 134 def inspect "#<#{self.class}: #{at.inspect},#{@offset.inspect}>" end |
#local_end ⇒ Object
A TimeOrDateTime instance representing the local time when this transition causes the previous observance to end (calculated from at using previous_offset).
94 95 96 97 |
# File 'lib/tzinfo/timezone_transition_info.rb', line 94 def local_end @local_end = at.add_with_convert(@previous_offset.utc_total_offset) unless @local_end @local_end end |
#local_start ⇒ Object
A TimeOrDateTime instance representing the local time when this transition causes the next observance to start (calculated from at using offset).
101 102 103 104 |
# File 'lib/tzinfo/timezone_transition_info.rb', line 101 def local_start @local_start = at.add_with_convert(@offset.utc_total_offset) unless @local_start @local_start end |