Class: TZInfo::TimezoneProxy

Inherits:
Timezone show all
Defined in:
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/tzinfo-2.0.5/lib/tzinfo/timezone_proxy.rb

Overview

A proxy class standing in for a Timezone with a given identifier. TimezoneProxy inherits from Timezone and can be treated identically to Timezone instances loaded with TZInfo::Timezone.get.

TimezoneProxy instances are used to avoid the performance overhead of loading time zone data into memory, for example, by TZInfo::Timezone.all.

The first time an attempt is made to access the data for the time zone, the real Timezone will be loaded is loaded. If the proxy’s identifier was not valid, then an exception will be raised at this point.

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Timezone

#<=>, #=~, #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, #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

#initialize(identifier) ⇒ TimezoneProxy

Initializes a new TZInfo::TimezoneProxy.

The ‘identifier` parameter is not checked when initializing the proxy. It will be validated when the real TZInfo::Timezone instance is loaded.

Parameters:

  • identifier (String)

    an IANA Time Zone Database time zone identifier.



23
24
25
26
27
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/tzinfo-2.0.5/lib/tzinfo/timezone_proxy.rb', line 23

def initialize(identifier)
  super()
  @identifier = identifier
  @real_timezone = nil
end

Class Method Details

._load(data) ⇒ TimezoneProxy

Loads a TZInfo::TimezoneProxy from the serialized representation returned by #_dump. This is method is called when using ‘Marshal.load` or `Marshal.restore` to restore a serialized TZInfo::Timezone.

Parameters:

Returns:



71
72
73
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/tzinfo-2.0.5/lib/tzinfo/timezone_proxy.rb', line 71

def self._load(data)
  TimezoneProxy.new(data)
end

Instance Method Details

#_dump(limit) ⇒ String

Returns a serialized representation of this TZInfo::TimezoneProxy. This method is called when using ‘Marshal.dump` with an instance of TZInfo::TimezoneProxy.

Parameters:

Returns:



60
61
62
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/tzinfo-2.0.5/lib/tzinfo/timezone_proxy.rb', line 60

def _dump(limit)
  identifier
end

#canonical_zoneTimezone

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

The IANA Time Zone database contains two types of definition: Zones and Links. Zones are defined by rules that set out when transitions occur. Links are just references to fully defined Zone, creating an alias for that Zone.

Links are commonly used where a time zone has been renamed in a release of the Time Zone database. For example, the US/Eastern Zone was renamed as America/New_York. A US/Eastern Link was added in its place, linking to (and creating an alias for) America/New_York.

Links are also used for time zones that are currently identical to a full Zone, but that are administered separately. For example, Europe/Vatican is a Link to (and alias for) Europe/Rome.

For a full Zone (implemented by DataTimezone), #canonical_zone returns self.

For a Link (implemented by LinkedTimezone), #canonical_zone returns a TZInfo::Timezone instance representing the full Zone that the link targets.

TZInfo can be used with different data sources (see the documentation for DataSource). Some DataSource implementations may not support distinguishing between full Zones and Links and will treat all time zones as full Zones. In this case, #canonical_zone will always return ‘self`.

There are two built-in DataSource implementations. DataSources::RubyDataSource (which will be used if the tzinfo-data gem is available) supports Link zones. DataSources::ZoneinfoDataSource returns Link zones as if they were full Zones. If the #canonical_zone or TZInfo::Timezone#canonical_identifier methods are needed, the tzinfo-data gem should be installed.

The DataSource.get method can be used to check which DataSource implementation is being used.

Returns:



50
51
52
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/tzinfo-2.0.5/lib/tzinfo/timezone_proxy.rb', line 50

def canonical_zone
  real_timezone.canonical_zone
end

#identifierString

Returns the identifier of the time zone, for example, ‘“Europe/Paris”`.

Returns:

  • (String)

    the identifier of the time zone, for example, ‘“Europe/Paris”`.



30
31
32
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/tzinfo-2.0.5/lib/tzinfo/timezone_proxy.rb', line 30

def identifier
  @real_timezone ? @real_timezone.identifier : @identifier
end

#period_for(time) ⇒ TimezonePeriod

Returns the TZInfo::TimezonePeriod that is valid at a given time.

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

Parameters:

Returns:

Raises:

  • (ArgumentError)

    if ‘time` is `nil`.

  • (ArgumentError)

    if ‘time` is a TZInfo::Timestamp with an unspecified offset.



35
36
37
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/tzinfo-2.0.5/lib/tzinfo/timezone_proxy.rb', line 35

def period_for(time)
  real_timezone.period_for_utc(time)
end

#periods_for_local(local_time) ⇒ Array<TimezonePeriod>

Returns the set of TZInfo::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 TZInfo::TimezonePeriod. More than one TZInfo::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 TZInfo::TimezonePeriod in all cases, use TZInfo::Timezone#period_for_local instead and specify how ambiguities should be resolved.

Parameters:

Returns:

Raises:

  • (ArgumentError)

    if ‘local_time` is `nil`.



40
41
42
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/tzinfo-2.0.5/lib/tzinfo/timezone_proxy.rb', line 40

def periods_for_local(local_time)
  real_timezone.periods_for_local(local_time)
end

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

Returns an ‘Array` of TZInfo::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 TZInfo::Timestamp specifying the latest (exclusive) transition to return.

  • from (Object) (defaults to: nil)

    an optional ‘Time`, `DateTime` or TZInfo::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 TZInfo::Timestamp with an unspecified offset.



45
46
47
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/tzinfo-2.0.5/lib/tzinfo/timezone_proxy.rb', line 45

def transitions_up_to(to, from = nil)
  real_timezone.transitions_up_to(to, from)
end