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

description[R]

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.

identifier[R]

The zone identifier.

Public Class Methods

new(identifier, latitude, longitude, description = nil) click to toggle source

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.

Calls superclass method
# File lib/tzinfo/country_timezone.rb, line 31
def new(identifier, latitude, longitude, description = nil)
  super(identifier, latitude, nil, longitude, nil, description)      
end
Also aliased as: new!
new!(identifier, latitude, longitude, description = nil)

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

Alias for: new

Public Instance Methods

==(ct) click to toggle source

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
description_or_friendly_identifier() click to toggle source

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
eql?(ct) click to toggle source

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
hash() click to toggle source

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
inspect() click to toggle source

Returns internal object state as a programmer-readable string.

# File lib/tzinfo/country_timezone.rb, line 131
def inspect
  "#<#{self.class}: #@identifier>"
end
latitude() click to toggle source

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
longitude() click to toggle source

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
timezone() click to toggle source

The Timezone (actually a TimezoneProxy for performance reasons).

# File lib/tzinfo/country_timezone.rb, line 66
def timezone
  Timezone.get_proxy(@identifier)
end