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#getlocalthat clears the associatedTimezoneOffsetif the base implementation of #getlocal returns aTimeWithOffset. -
#gmtime ⇒ TimeWithOffset
An overridden version of
Time#gmtimethat clears the associatedTimezoneOffset. -
#localtime(*args) ⇒ TimeWithOffset
An overridden version of
Time#localtimethat clears the associatedTimezoneOffset. -
#round(ndigits = 0) ⇒ Time
An overridden version of
Time#roundthat, if there is an associatedTimezoneOffset, returns aTimeWithOffsetpreserving that offset. -
#set_timezone_offset(timezone_offset) ⇒ TimeWithOffset
Marks this
TimeWithOffsetas a local time with the UTC offset of a givenTimezoneOffsetand sets the associatedTimezoneOffset. -
#to_a ⇒ Array
An overridden version of
Time#to_a. -
#to_datetime ⇒ DateTime
An overridden version of
Time#to_datetimethat, if there is an associatedTimezoneOffset, returns aDateTimeWithOffsetwith that offset. -
#utc ⇒ TimeWithOffset
An overridden version of
Time#utcthat clears the associatedTimezoneOffset. -
#zone ⇒ String
An overridden version of
Time#zonethat, 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