Class: TZInfo::TimezoneProxy
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Timezone
|
|
Instance Chain:
self,
Timezone ,
Comparable
|
|
Inherits: |
TZInfo::Timezone
|
Defined in: | 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 Timezone.get.
TimezoneProxy
instances are used to avoid the performance overhead of
loading time zone data into memory, for example, by 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 Attribute Summary
Timezone
- Inherited
.default_dst | Returns the default value of the optional |
.default_dst= | Sets the default value of the optional |
Class Method Summary
-
._load(data) ⇒ TimezoneProxy
Loads a
TimezoneProxy
from the serialized representation returned by #_dump. -
.new(identifier) ⇒ TimezoneProxy
constructor
Initializes a new
TimezoneProxy
.
Timezone
- Inherited
._load | |
.all | Returns an |
.all_country_zone_identifiers | Returns an |
.all_country_zones | Returns an |
.all_data_zone_identifiers | time zones that are defined by offsets and transitions. |
.all_data_zones | Returns an |
.all_identifiers, | |
.all_linked_zone_identifiers | time zones that are defined as links to / aliases for other time zones. |
.all_linked_zones | Returns an |
.get | Returns a time zone by its IANA Time Zone Database identifier (e.g. |
.get_proxy | Returns a proxy for the time zone with the given identifier. |
.data_source, .get_proxies |
Instance Method Summary
-
#_dump(limit) ⇒ String
Returns a serialized representation of this
TimezoneProxy
. - #canonical_zone ⇒ Timezone
- #identifier ⇒ String
-
#period_for(time) ⇒ TimezonePeriod
Returns the
TimezonePeriod
that is valid at a given time. -
#periods_for_local(local_time) ⇒ Array<TimezonePeriod>
Returns the set of
TimezonePeriod
s that are valid for the given local time as anArray
. -
#transitions_up_to(to, from = nil) ⇒ Array<TimezoneTransition>
Returns an
Array
ofTimezoneTransition
instances representing the times where the UTC offset of the timezone changes. -
#real_timezone ⇒ Timezone
private
Returns the real
Timezone
instance being proxied.
Timezone
- Inherited
#<=> | Compares this |
#=~ | Matches |
#_dump | Returns a serialized representation of this |
#abbr | Alias for Timezone#abbreviation. |
#abbreviation, | |
#base_utc_offset | Returns the base offset from UTC in seconds at the given time. |
#canonical_identifier | Returns the canonical identifier of this time zone. |
#canonical_zone | |
#current_period, | |
#current_period_and_time | Alias for Timezone#current_time_and_period. |
#current_time_and_period | Returns the current local time and |
#dst?, #eql?, | |
#friendly_identifier | Returns #identifier, modified to make it more readable. |
#hash, #identifier, #inspect, | |
#local_datetime | Creates a |
#local_time | Creates a |
#local_timestamp | Creates a |
#local_to_utc | Converts a local time for the time zone to UTC. |
#name, #now, | |
#observed_utc_offset | Returns the observed offset from UTC in seconds at the given time. |
#offsets_up_to | Returns the unique offsets used by the time zone up to a given time ( |
#period_for | Returns the |
#period_for_local | Returns the |
#period_for_utc | Returns the |
#periods_for_local | Returns the set of |
#strftime | Converts a time to local time for the time zone and returns a |
#to_local | Converts a time to the local time for the time zone. |
#to_s, | |
#transitions_up_to | Returns an |
#utc_offset | Alias for Timezone#observed_utc_offset. |
#utc_to_local | Converts a time in UTC to the local time for the time zone. |
#raise_unknown_timezone | Raises an |
Constructor Details
.new(identifier) ⇒ TimezoneProxy
Initializes a new TimezoneProxy
.
The #identifier parameter is not checked when initializing the proxy. It
will be validated when the real Timezone
instance is loaded.
# File 'lib/tzinfo/timezone_proxy.rb', line 23
def initialize(identifier) super() @identifier = identifier @real_timezone = nil end
Class Method Details
._load(data) ⇒ TimezoneProxy
# File '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 TimezoneProxy
. This method
is called when using Marshal.dump
with an instance of TimezoneProxy
.
# File 'lib/tzinfo/timezone_proxy.rb', line 60
def _dump(limit) identifier end
#canonical_zone ⇒ Timezone
Returns the canonical Timezone
instance for this 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
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
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.
# File 'lib/tzinfo/timezone_proxy.rb', line 50
def canonical_zone real_timezone.canonical_zone end
#identifier ⇒ String
# File 'lib/tzinfo/timezone_proxy.rb', line 30
def identifier @real_timezone ? @real_timezone.identifier : @identifier end
#period_for(time) ⇒ TimezonePeriod
Returns the TimezonePeriod
that is valid at a given time.
Unlike period_for_local
and period_for_utc
, the UTC offset of the
time
parameter is taken into consideration.
# File '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 TimezonePeriod
s 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
period_for_local
instead and specify how ambiguities should be resolved.
# File 'lib/tzinfo/timezone_proxy.rb', line 40
def periods_for_local(local_time) real_timezone.periods_for_local(local_time) end
#real_timezone ⇒ Timezone (private)
Returns the real Timezone
instance being proxied.
The real Timezone
is loaded using Timezone.get on the first access.
# File 'lib/tzinfo/timezone_proxy.rb', line 82
def real_timezone # Thread-safety: It is possible that the value of @real_timezone may be # calculated multiple times in concurrently executing threads. It is not # worth the overhead of locking to ensure that @real_timezone is only # calculated once. unless @real_timezone result = Timezone.get(@identifier) return result if frozen? @real_timezone = result end @real_timezone 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.
# File 'lib/tzinfo/timezone_proxy.rb', line 45
def transitions_up_to(to, from = nil) real_timezone.transitions_up_to(to, from) end