Class: TZInfo::DataTimezone

Inherits:
InfoTimezone show all
Defined in:
lib/tzinfo/data_timezone.rb

Overview

Represents time zones that are defined by rules that set out when transitions occur.

Instance Method Summary collapse

Methods inherited from InfoTimezone

#identifier, #info, #initialize

Methods inherited from Timezone

#<=>, #=~, #_dump, _load, #abbreviation, all, all_country_zone_identifiers, all_country_zones, all_data_zone_identifiers, all_data_zones, all_identifiers, all_linked_zone_identifiers, all_linked_zones, #base_utc_offset, #canonical_identifier, #current_period, #current_time_and_period, default_dst, default_dst=, #dst?, #eql?, #friendly_identifier, get, get_proxy, #hash, #identifier, #inspect, #local_datetime, #local_time, #local_timestamp, #local_to_utc, #name, #now, #observed_utc_offset, #offsets_up_to, #period_for_local, #period_for_utc, #strftime, #to_local, #to_s, #utc_to_local

Constructor Details

This class inherits a constructor from TZInfo::InfoTimezone

Instance Method Details

#canonical_zoneTimezone

Returns the canonical Timezone instance for this TZInfo::DataTimezone.

For a TZInfo::DataTimezone, this is always self.

Returns:



40
41
42
# File 'lib/tzinfo/data_timezone.rb', line 40

def canonical_zone
  self
end

#period_for(time) ⇒ TimezonePeriod

Returns the TimezonePeriod that is valid at a given time.

Unlike Timezone#period_for_local and Timezone#period_for_utc, the UTC offset of the time parameter is taken into consideration.

Parameters:

  • time (Object)

    a Time, DateTime or Timestamp.

Returns:

Raises:

  • (ArgumentError)

    if time is nil.

  • (ArgumentError)

    if time is a Timestamp with an unspecified offset.



9
10
11
12
13
14
# File 'lib/tzinfo/data_timezone.rb', line 9

def period_for(time)
  raise ArgumentError, 'time must be specified' unless time
  timestamp = Timestamp.for(time)
  raise ArgumentError, 'time must have a specified utc_offset' unless timestamp.utc_offset
  info.period_for(timestamp)
end

#periods_for_local(local_time) ⇒ Array<TimezonePeriod>

Returns the set of TimezonePeriods that are valid for the given local time as an Array.

The UTC offset of the local_time parameter is ignored (it is treated as a time in the time zone represented by self).

This will typically return an Array containing a single TimezonePeriod. More than one TimezonePeriod will be returned when the local time is ambiguous (for example, when daylight savings time ends). An empty Array will be returned when the local time is not valid (for example, when daylight savings time begins).

To obtain just a single TimezonePeriod in all cases, use Timezone#period_for_local instead and specify how ambiguities should be resolved.

Parameters:

  • local_time (Object)

    a Time, DateTime or Timestamp.

Returns:

Raises:

  • (ArgumentError)

    if local_time is nil.



17
18
19
20
# File 'lib/tzinfo/data_timezone.rb', line 17

def periods_for_local(local_time)
  raise ArgumentError, 'local_time must be specified' unless local_time
  info.periods_for_local(Timestamp.for(local_time, :ignore))
end

#transitions_up_to(to, from = nil) ⇒ Array<TimezoneTransition>

Returns an Array of TimezoneTransition instances representing the times where the UTC offset of the timezone changes.

Transitions are returned up to a given time (to).

A from time may also be supplied using the from parameter. If from is not nil, only transitions from that time onwards will be returned.

Comparisons with to are exclusive. Comparisons with from are inclusive. If a transition falls precisely on to, it will be excluded. If a transition falls on from, it will be included.

Parameters:

  • to (Object)

    a Time, DateTime or Timestamp specifying the latest (exclusive) transition to return.

  • from (Object) (defaults to: nil)

    an optional Time, DateTime or Timestamp specifying the earliest (inclusive) transition to return.

Returns:

  • (Array<TimezoneTransition>)

    the transitions that are earlier than to and, if specified, at or later than from. Transitions are ordered by when they occur, from earliest to latest.

Raises:

  • (ArgumentError)

    if from is specified and to is not greater than from.

  • (ArgumentError)

    is raised if to is nil.

  • (ArgumentError)

    if either to or from is a Timestamp with an unspecified offset.



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/tzinfo/data_timezone.rb', line 23

def transitions_up_to(to, from = nil)
  raise ArgumentError, 'to must be specified' unless to
  to_timestamp = Timestamp.for(to)
  from_timestamp = from && Timestamp.for(from)

  begin
    info.transitions_up_to(to_timestamp, from_timestamp)
  rescue ArgumentError => e
    raise ArgumentError, e.message.gsub('_timestamp', '')
  end
end