Class: TZInfo::TimeWithOffset
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Time
|
|
Instance Chain:
self,
WithOffset ,
Time
|
|
Inherits: |
Time
|
Defined in: | lib/tzinfo/time_with_offset.rb |
Overview
A subclass of Time
used to represent local times. TimeWithOffset
holds a
reference to the related TimezoneOffset
and overrides various methods to
return results appropriate for the TimezoneOffset
. Certain operations will
clear the associated TimezoneOffset
(if the TimezoneOffset
would not
necessarily be valid for the result). Once the TimezoneOffset
has been
cleared, TimeWithOffset
behaves identically to Time
.
Arithmetic performed on TimeWithOffset
instances is not time zone-aware.
Regardless of whether transitions in the time zone are crossed, results of
arithmetic operations will always maintain the same offset from UTC
(utc_offset
). The associated TimezoneOffset
will aways be cleared.
Instance Attribute Summary
-
#dst? ⇒ Boolean
(also: #isdst)
readonly
An overridden version of
Time#dst?
that, if there is an associatedTimezoneOffset
, returns the result of calling dst? on that offset. -
#isdst
readonly
Alias for #dst?.
- #timezone_offset ⇒ TimezoneOffset readonly
Instance Method Summary
-
#getlocal(*args) ⇒ Time
An overridden version of
Time#getlocal
that clears the associatedTimezoneOffset
if the base implementation of #getlocal returns aTimeWithOffset
. -
#gmtime ⇒ TimeWithOffset
An overridden version of
Time#gmtime
that clears the associatedTimezoneOffset
. -
#localtime(*args) ⇒ TimeWithOffset
An overridden version of
Time#localtime
that clears the associatedTimezoneOffset
. -
#round(ndigits = 0) ⇒ Time
An overridden version of
Time#round
that, if there is an associatedTimezoneOffset
, returns aTimeWithOffset
preserving that offset. -
#set_timezone_offset(timezone_offset) ⇒ TimeWithOffset
Marks this
TimeWithOffset
as a local time with the UTC offset of a givenTimezoneOffset
and sets the associatedTimezoneOffset
. -
#to_a ⇒ Array
An overridden version of
Time#to_a
. -
#to_datetime ⇒ DateTime
An overridden version of
Time#to_datetime
that, if there is an associatedTimezoneOffset
, returns aDateTimeWithOffset
with that offset. -
#utc ⇒ TimeWithOffset
An overridden version of
Time#utc
that clears the associatedTimezoneOffset
. -
#zone ⇒ String
An overridden version of
Time#zone
that, if there is an associatedTimezoneOffset
, returns the abbreviation of that offset. -
#clear_timezone_offset ⇒ TimeWithOffset
protected
Clears the associated
TimezoneOffset
.
WithOffset
- Included
#strftime | Overrides the |
#if_timezone_offset | Performs a calculation if there is an associated |
Instance Attribute Details
#dst? ⇒ Boolean
(readonly)
Also known as: #isdst
An overridden version of Time#dst?
that, if there is an associated
TimezoneOffset
, returns the result of calling dst?
on that offset.
# File 'lib/tzinfo/time_with_offset.rb', line 43
def dst? to = timezone_offset to ? to.dst? : super end
#isdst (readonly)
Alias for #dst?.
# File 'lib/tzinfo/time_with_offset.rb', line 47
alias isdst dst?
#timezone_offset ⇒ TimezoneOffset (readonly)
# File 'lib/tzinfo/time_with_offset.rb', line 21
attr_reader :timezone_offset
Instance Method Details
#clear_timezone_offset ⇒ TimeWithOffset
(protected)
Clears the associated TimezoneOffset
.
# File 'lib/tzinfo/time_with_offset.rb', line 149
def clear_timezone_offset @timezone_offset = nil self end
#getlocal(*args) ⇒ Time
An overridden version of Time#getlocal
that clears the associated
TimezoneOffset
if the base implementation of getlocal
returns a
TimeWithOffset
.
# File 'lib/tzinfo/time_with_offset.rb', line 55
def getlocal(*args) # JRuby < 9.3 returns a Time in all cases. # JRuby >= 9.3 returns a Time when called with no arguments and a # TimeWithOffset with a timezone_offset assigned when called with an # offset argument. result = super result.clear_timezone_offset if result.kind_of?(TimeWithOffset) result end
#gmtime ⇒ TimeWithOffset
An overridden version of Time#gmtime
that clears the associated
TimezoneOffset
.
# File 'lib/tzinfo/time_with_offset.rb', line 69
def gmtime super @timezone_offset = nil self end
#localtime(*args) ⇒ TimeWithOffset
An overridden version of Time#localtime
that clears the associated
TimezoneOffset
.
# File 'lib/tzinfo/time_with_offset.rb', line 79
def localtime(*args) super @timezone_offset = nil self end
#round(ndigits = 0) ⇒ Time
An overridden version of Time#round
that, if there is an associated
TimezoneOffset
, returns a TimeWithOffset
preserving that offset.
# File 'lib/tzinfo/time_with_offset.rb', line 89
def round(ndigits = 0) if_timezone_offset(super) {|o,t| self.class.at(t.to_i, t.subsec * 1_000_000).set_timezone_offset(o) } end
#set_timezone_offset(timezone_offset) ⇒ TimeWithOffset
Marks this TimeWithOffset
as a local time with the UTC offset of a given
TimezoneOffset
and sets the associated TimezoneOffset
.
# File 'lib/tzinfo/time_with_offset.rb', line 30
def set_timezone_offset(timezone_offset) raise ArgumentError, 'timezone_offset must be specified' unless timezone_offset localtime(timezone_offset.observed_utc_offset) @timezone_offset = timezone_offset self end
#to_a ⇒ Array
An overridden version of Time#to_a
. The #isdst (index 8) and #zone
(index 9) elements of the array are set according to the associated
TimezoneOffset
.
# File 'lib/tzinfo/time_with_offset.rb', line 98
def to_a if_timezone_offset(super) do |o,a| a[8] = o.dst? a[9] = o.abbreviation a end end
#to_datetime ⇒ DateTime
An overridden version of Time#to_datetime
that, if there is an
associated TimezoneOffset
, returns a DateTimeWithOffset
with that
offset.
# File 'lib/tzinfo/time_with_offset.rb', line 135
def to_datetime if_timezone_offset(super) do |o,dt| offset = dt.offset result = DateTimeWithOffset.jd(dt.jd + dt.day_fraction - offset) result = result.new_offset(offset) unless offset == 0 result.set_timezone_offset(o) end end
#utc ⇒ TimeWithOffset
An overridden version of Time#utc
that clears the associated
TimezoneOffset
.
# File 'lib/tzinfo/time_with_offset.rb', line 110
def utc super @timezone_offset = nil self end
#zone ⇒ String
An overridden version of Time#zone
that, if there is an associated
TimezoneOffset
, returns the abbreviation
of that offset.
# File 'lib/tzinfo/time_with_offset.rb', line 123
def zone to = timezone_offset to ? to.abbreviation : super end