class TZInfo::CountryTimezone

Information about a time zone used by a {Country}.

Attributes

A description of this time zone in relation to the country, e.g. “Eastern Time”. This is usually ‘nil` for countries that have a single time zone.

@return [String] an optional description of the time zone.

@return [String] the identifier of the {Timezone} being described.

The latitude of this time zone in degrees. Positive numbers are degrees north and negative numbers are degrees south.

Note that depending on the data source, the position given by {#latitude} and {#longitude} may not be within the country.

@return [Rational] the latitude in degrees.

The longitude of this time zone in degrees. Positive numbers are degrees east and negative numbers are degrees west.

Note that depending on the data source, the position given by {#latitude} and {#longitude} may not be within the country.

@return [Rational] the longitude in degrees.

Public Class Methods

Creates a new {CountryTimezone}.

The passed in identifier and description instances will be frozen.

{CountryTimezone} instances should normally only be constructed by implementations of {DataSource}.

@param identifier [String] the {Timezone} identifier. @param latitude [Rational] the latitude of the time zone. @param longitude [Rational] the longitude of the time zone. @param description [String] an optional description of the time zone.

# File lib/tzinfo/country_timezone.rb, line 44
def initialize(identifier, latitude, longitude, description = nil)
  @identifier = identifier.freeze
  @latitude = latitude
  @longitude = longitude
  @description = description && description.freeze
end

Public Instance Methods

Tests if the given object is equal to the current instance (has the same identifier, latitude, longitude and description).

@param ct [Object] the object to be compared. @return [TrueClass] ‘true` if `ct` is equal to the current instance.

# File lib/tzinfo/country_timezone.rb, line 72
def ==(ct)
  ct.kind_of?(CountryTimezone) &&
    identifier == ct.identifier  && latitude == ct.latitude &&
    longitude == ct.longitude   && description == ct.description
end

@return [String] the {description} if present, otherwise a human-readable

representation of the identifier (using {Timezone#friendly_identifier}).
# File lib/tzinfo/country_timezone.rb, line 63
def description_or_friendly_identifier
  description || timezone.friendly_identifier(true)
end

Tests if the given object is equal to the current instance (has the same identifier, latitude, longitude and description).

@param ct [Object] the object to be compared. @return [Boolean] ‘true` if `ct` is equal to the current instance.

# File lib/tzinfo/country_timezone.rb, line 83
def eql?(ct)
  self == ct
end

@return [Integer] a hash based on the {identifier}, {latitude}, {longitude} and {description}.

# File lib/tzinfo/country_timezone.rb, line 89
def hash
  [@identifier, @latitude, @longitude, @description].hash
end

Returns the associated {Timezone}.

The result is actually an instance of {TimezoneProxy} in order to defer loading of the time zone transition data until it is first needed.

@return [Timezone] the associated {Timezone}.

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