class TZInfo::TimezoneOffset
Represents an offset defined in a Timezone
data file.
Attributes
The abbreviation that identifies this observance, e.g. “GMT” (Greenwich Mean Time) or “BST” (British Summer Time) for “Europe/London”. The returned identifier is a symbol.
The offset from the time zone's standard time in seconds. Zero when daylight savings time is not in effect. Non-zero (usually 3600 = 1 hour) if daylight savings is being observed.
Note that zoneinfo files only include the value of utc_total_offset
and a DST flag. When using DataSources::ZoneinfoDataSource, the std_offset
will be derived from changes to the UTC total offset and the DST flag. As a consequence, utc_total_offset
will always be correct, but std_offset
may be inaccurate.
If you require std_offset
to be accurate, install the tzinfo-data gem and set RubyDataSource
as the DataSource
.
The base offset of the timezone from UTC in seconds. This does not include any adjustment made for daylight savings time and will typically remain constant throughout the year.
To obtain the currently observed offset from UTC, including the effect of daylight savings time, use utc_total_offset
instead.
Note that zoneinfo files only include the value of utc_total_offset
and a DST flag. When using ZoneinfoDataSource
, the utc_offset
will be derived from changes to the UTC total offset and the DST flag. As a consequence, utc_total_offset
will always be correct, but utc_offset
may be inaccurate.
If you require utc_offset
to be accurate, install the tzinfo-data gem and set RubyDataSource
as the DataSource
.
The total offset of this observance from UTC in seconds (utc_offset
+ std_offset
).
Public Class Methods
Constructs a new TimezoneOffset
. utc_offset
and std_offset
are specified in seconds.
# File lib/tzinfo/timezone_offset.rb, line 45 def initialize(utc_offset, std_offset, abbreviation) @utc_offset = utc_offset @std_offset = std_offset @abbreviation = abbreviation @utc_total_offset = @utc_offset + @std_offset end
Public Instance Methods
Returns true if and only if toi has the same utc_offset
, std_offset
and abbreviation as this TimezoneOffset
.
# File lib/tzinfo/timezone_offset.rb, line 80 def ==(toi) toi.kind_of?(TimezoneOffset) && utc_offset == toi.utc_offset && std_offset == toi.std_offset && abbreviation == toi.abbreviation end
True if std_offset
is non-zero.
# File lib/tzinfo/timezone_offset.rb, line 54 def dst? @std_offset != 0 end
Returns true if and only if toi has the same utc_offset
, std_offset
and abbreviation as this TimezoneOffset
.
# File lib/tzinfo/timezone_offset.rb, line 87 def eql?(toi) self == toi end
Returns a hash of this TimezoneOffset
.
# File lib/tzinfo/timezone_offset.rb, line 92 def hash utc_offset.hash ^ std_offset.hash ^ abbreviation.hash end
Returns internal object state as a programmer-readable string.
# File lib/tzinfo/timezone_offset.rb, line 97 def inspect "#<#{self.class}: #@utc_offset,#@std_offset,#@abbreviation>" end
Converts a UTC Time, DateTime or integer timestamp to local time, based on the offset of this period.
Deprecation warning: this method will be removed in TZInfo
version 2.0.0.
# File lib/tzinfo/timezone_offset.rb, line 62 def to_local(utc) TimeOrDateTime.wrap(utc) {|wrapped| wrapped + @utc_total_offset } end
Converts a local Time, DateTime or integer timestamp to UTC, based on the offset of this period.
Deprecation warning: this method will be removed in TZInfo
version 2.0.0.
# File lib/tzinfo/timezone_offset.rb, line 72 def to_utc(local) TimeOrDateTime.wrap(local) {|wrapped| wrapped - @utc_total_offset } end