class TZInfo::CountryTimezone
A Timezone
within a Country
. This contains extra information about the Timezone
that is specific to the Country
(a Timezone
could be used by multiple countries).
Attributes
A description of this timezone in relation to the country, e.g. “Eastern Time”. This is usually nil for countries having only a single Timezone
.
The zone identifier.
Public Class Methods
Creates a new CountryTimezone
with a timezone identifier, latitude, longitude and description. The latitude and longitude must be specified as instances of Rational.
CountryTimezone
instances should normally only be constructed when creating new DataSource
implementations.
# File lib/tzinfo/country_timezone.rb, line 31 def new(identifier, latitude, longitude, description = nil) super(identifier, latitude, nil, longitude, nil, description) end
Creates a new CountryTimezone
with a timezone identifier, latitude, longitude and description. The latitude and longitude are specified as rationals - a numerator and denominator. For performance reasons, the numerators and denominators must be specified in their lowest form.
For use internally within TZInfo
.
@!visibility private
Public Instance Methods
Returns true if and only if the given CountryTimezone
is equal to the current CountryTimezone
(has the same identifer, latitude, longitude and description).
# File lib/tzinfo/country_timezone.rb, line 109 def ==(ct) ct.kind_of?(CountryTimezone) && identifier == ct.identifier && latitude == ct.latitude && longitude == ct.longitude && description == ct.description end
if description is not nil, this method returns description; otherwise it returns timezone.friendly_identifier(true).
# File lib/tzinfo/country_timezone.rb, line 72 def description_or_friendly_identifier description || timezone.friendly_identifier(true) end
Returns true if and only if the given CountryTimezone
is equal to the current CountryTimezone
(has the same identifer, latitude, longitude and description).
# File lib/tzinfo/country_timezone.rb, line 118 def eql?(ct) self == ct end
Returns a hash of this CountryTimezone
.
# File lib/tzinfo/country_timezone.rb, line 123 def hash @identifier.hash ^ (@latitude ? @latitude.numerator.hash ^ @latitude.denominator.hash : @latitude_numerator.hash ^ @latitude_denominator.hash) ^ (@longitude ? @longitude.numerator.hash ^ @longitude.denominator.hash : @longitude_numerator.hash ^ @longitude_denominator.hash) ^ @description.hash end
Returns internal object state as a programmer-readable string.
# File lib/tzinfo/country_timezone.rb, line 131 def inspect "#<#{self.class}: #@identifier>" end
The latitude of this timezone in degrees as a Rational.
# File lib/tzinfo/country_timezone.rb, line 77 def latitude # Thread-safety: It is possible that the value of @latitude may be # calculated multiple times in concurrently executing threads. It is not # worth the overhead of locking to ensure that @latitude is only # calculated once. unless @latitude result = RubyCoreSupport.rational_new!(@latitude_numerator, @latitude_denominator) return result if frozen? @latitude = result end @latitude end
The longitude of this timezone in degrees as a Rational.
# File lib/tzinfo/country_timezone.rb, line 92 def longitude # Thread-safety: It is possible that the value of @longitude may be # calculated multiple times in concurrently executing threads. It is not # worth the overhead of locking to ensure that @longitude is only # calculated once. unless @longitude result = RubyCoreSupport.rational_new!(@longitude_numerator, @longitude_denominator) return result if frozen? @longitude = result end @longitude end
The Timezone
(actually a TimezoneProxy
for performance reasons).
# File lib/tzinfo/country_timezone.rb, line 66 def timezone Timezone.get_proxy(@identifier) end