class TZInfo::TimezonePeriod

{TimezonePeriod} represents a period of time for a time zone where the same offset from UTC applies. It provides access to the observed offset, time zone abbreviation, start time and end time.

The period of time can be unbounded at the start, end, or both the start and end.

@abstract Time zone period data will returned as an instance of one of the

subclasses of {TimezonePeriod}.

Attributes

offset[R]

@return [TimezoneOffset] the offset that applies in the period of time.

Public Class Methods

new(offset) click to toggle source

Initializes a {TimezonePeriod}.

@param offset [TimezoneOffset] the offset that is observed for the period

of time.

@raise [ArgumentError] if `offset` is `nil`.

# File lib/tzinfo/timezone_period.rb, line 23
def initialize(offset)
  raise ArgumentError, 'offset must be specified' unless offset
  @offset = offset
end

Public Instance Methods

abbr()
Alias for: abbreviation
abbreviation() click to toggle source

The abbreviation that identifies this offset. For example GMT (Greenwich Mean Time) or BST (British Summer Time) for Europe/London.

@return [String] the abbreviation that identifies this offset.

# File lib/tzinfo/timezone_period.rb, line 80
def abbreviation
  @offset.abbreviation
end
Also aliased as: abbr, zone_identifier
base_utc_offset() click to toggle source

Returns the base offset from UTC in seconds (`observed_utc_offset - std_offset`). This does not include any adjustment made for daylight savings time and will typically remain constant throughout the year.

To obtain the currently observed offset from UTC, including the effect of daylight savings time, use {observed_utc_offset} instead.

If you require accurate {base_utc_offset} values, you should install the tzinfo-data gem and set {DataSources::RubyDataSource} as the {DataSource}. When using {DataSources::ZoneinfoDataSource}, the value of {base_utc_offset} has to be derived from changes to the observed UTC offset and DST status since it is not included in zoneinfo files.

@return [Integer] the base offset from UTC in seconds.

# File lib/tzinfo/timezone_period.rb, line 54
def base_utc_offset
  @offset.base_utc_offset
end
Also aliased as: utc_offset
dst?() click to toggle source

Determines if daylight savings is in effect (i.e. if {std_offset} is non-zero).

@return [Boolean] `true` if {std_offset} is non-zero, otherwise `false`.

# File lib/tzinfo/timezone_period.rb, line 99
def dst?
  @offset.dst?
end
end_transition() click to toggle source

@return [TimezoneTransition] the transition that defines the end of this

{TimezonePeriod} (`nil` if the end is unbounded).
# File lib/tzinfo/timezone_period.rb, line 36
def end_transition
  raise_not_implemented(:end_transition)
end
ends_at() click to toggle source

Returns the UTC end time of the period or `nil` if the end of the period is unbounded.

The result is returned as a {Timestamp}. To obtain the end time as a `Time` or `DateTime`, call either {Timestamp#to_time to_time} or {Timestamp#to_datetime to_datetime} on the result.

@return [Timestamp] the UTC end time of the period or `nil` if the end of

the period is unbounded.
# File lib/tzinfo/timezone_period.rb, line 125
def ends_at
  timestamp(end_transition)
end
local_ends_at() click to toggle source

Returns the local end time of the period or `nil` if the end of the period is unbounded.

The result is returned as a {TimestampWithOffset}. To obtain the end time as a `Time` or `DateTime`, call either {TimestampWithOffset#to_time to_time} or {TimestampWithOffset#to_datetime to_datetime} on the result.

@return [TimestampWithOffset] the local end time of the period or `nil` if

the end of the period is unbounded.
# File lib/tzinfo/timezone_period.rb, line 151
def local_ends_at
  timestamp_with_offset(end_transition)
end
local_starts_at() click to toggle source

Returns the local start time of the period or `nil` if the start of the period is unbounded.

The result is returned as a {TimestampWithOffset}. To obtain the start time as a `Time` or `DateTime`, call either {TimestampWithOffset#to_time to_time} or {TimestampWithOffset#to_datetime to_datetime} on the result.

@return [TimestampWithOffset] the local start time of the period or `nil`

if the start of the period is unbounded.
# File lib/tzinfo/timezone_period.rb, line 138
def local_starts_at
  timestamp_with_offset(start_transition)
end
observed_utc_offset() click to toggle source

Returns the observed offset from UTC in seconds (`base_utc_offset + std_offset`). This includes adjustments made for daylight savings time.

@return [Integer] the observed offset from UTC in seconds.

# File lib/tzinfo/timezone_period.rb, line 90
def observed_utc_offset
  @offset.observed_utc_offset
end
Also aliased as: utc_total_offset
start_transition() click to toggle source

@return [TimezoneTransition] the transition that defines the start of this

{TimezonePeriod} (`nil` if the start is unbounded).
# File lib/tzinfo/timezone_period.rb, line 30
def start_transition
  raise_not_implemented(:start_transition)
end
starts_at() click to toggle source

Returns the UTC start time of the period or `nil` if the start of the period is unbounded.

The result is returned as a {Timestamp}. To obtain the start time as a `Time` or `DateTime`, call either {Timestamp#to_time to_time} or {Timestamp#to_datetime to_datetime} on the result.

@return [Timestamp] the UTC start time of the period or `nil` if the start

of the period is unbounded.
# File lib/tzinfo/timezone_period.rb, line 112
def starts_at
  timestamp(start_transition)
end
std_offset() click to toggle source

Returns the offset from the time zone's standard time in seconds (`observed_utc_offset - base_utc_offset`). Zero when daylight savings time is not in effect. Non-zero (usually 3600 = 1 hour) if daylight savings is being observed.

If you require accurate {std_offset} values, you should install the tzinfo-data gem and set {DataSources::RubyDataSource} as the {DataSource}. When using {DataSources::ZoneinfoDataSource}, the value of {std_offset} has to be derived from changes to the observed UTC offset and DST status since it is not included in zoneinfo files.

@return [Integer] the offset from the time zone's standard time in

seconds.
# File lib/tzinfo/timezone_period.rb, line 72
def std_offset
  @offset.std_offset
end
utc_offset()
Alias for: base_utc_offset
utc_total_offset()
Alias for: observed_utc_offset
zone_identifier()
Alias for: abbreviation

Private Instance Methods

raise_not_implemented(method_name) click to toggle source

Raises a {NotImplementedError} to indicate that subclasses should override a method.

@raise [NotImplementedError] always.

# File lib/tzinfo/timezone_period.rb, line 161
def raise_not_implemented(method_name)
  raise NotImplementedError, "Subclasses must override #{method_name}"
end
timestamp(transition) click to toggle source

@param transition [TimezoneTransition] a transition or `nil`. @return [Timestamp] the {Timestamp} representing when a transition occurs,

or `nil` if `transition` is `nil`.
# File lib/tzinfo/timezone_period.rb, line 168
def timestamp(transition)
  transition ? transition.at : nil
end
timestamp_with_offset(transition) click to toggle source

@param transition [TimezoneTransition] a transition or `nil`. @return [TimestampWithOffset] a {Timestamp} representing when a transition

occurs with offset set to {#offset}, or `nil` if `transition` is `nil`.
# File lib/tzinfo/timezone_period.rb, line 175
def timestamp_with_offset(transition)
  transition ? TimestampWithOffset.set_timezone_offset(transition.at, offset) : nil
end