Class: TZInfo::TimezoneOffsetInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/tzinfo/timezone_offset_info.rb

Overview

Represents an offset defined in a Timezone data file.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(utc_offset, std_offset, abbreviation) ⇒ TimezoneOffsetInfo

Constructs a new TimezoneOffsetInfo. utc_offset and std_offset are specified in seconds.



44
45
46
47
48
49
50
# File 'lib/tzinfo/timezone_offset_info.rb', line 44

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

Instance Attribute Details

#abbreviationObject (readonly)

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.



40
41
42
# File 'lib/tzinfo/timezone_offset_info.rb', line 40

def abbreviation
  @abbreviation
end

#std_offsetObject (readonly)

The offset from standard time for the zone in seconds (i.e. non-zero if daylight savings is being observed).



31
32
33
# File 'lib/tzinfo/timezone_offset_info.rb', line 31

def std_offset
  @std_offset
end

#utc_offsetObject (readonly)

The base offset of the timezone from UTC in seconds.



27
28
29
# File 'lib/tzinfo/timezone_offset_info.rb', line 27

def utc_offset
  @utc_offset
end

#utc_total_offsetObject (readonly)

The total offset of this observance from UTC in seconds (utc_offset + std_offset).



35
36
37
# File 'lib/tzinfo/timezone_offset_info.rb', line 35

def utc_total_offset
  @utc_total_offset
end

Instance Method Details

#==(toi) ⇒ Object

Returns true if and only if toi has the same utc_offset, std_offset and abbreviation as this TimezoneOffsetInfo.



73
74
75
76
# File 'lib/tzinfo/timezone_offset_info.rb', line 73

def ==(toi)
  toi.respond_to?(:utc_offset) && toi.respond_to?(:std_offset) && toi.respond_to?(:abbreviation) &&
    utc_offset == toi.utc_offset && std_offset == toi.std_offset && abbreviation == toi.abbreviation
end

#dst?Boolean

True if std_offset is non-zero.

Returns:

  • (Boolean)


53
54
55
# File 'lib/tzinfo/timezone_offset_info.rb', line 53

def dst?
  @std_offset != 0
end

#eql?(toi) ⇒ Boolean

Returns true if and only if toi has the same utc_offset, std_offset and abbreviation as this TimezoneOffsetInfo.

Returns:

  • (Boolean)


80
81
82
# File 'lib/tzinfo/timezone_offset_info.rb', line 80

def eql?(toi)
  self == toi
end

#hashObject

Returns a hash of this TimezoneOffsetInfo.



85
86
87
# File 'lib/tzinfo/timezone_offset_info.rb', line 85

def hash
  utc_offset.hash ^ std_offset.hash ^ abbreviation.hash
end

#inspectObject

Returns internal object state as a programmer-readable string.



90
91
92
# File 'lib/tzinfo/timezone_offset_info.rb', line 90

def inspect
  "#<#{self.class}: #@utc_offset,#@std_offset,#@abbreviation>"
end

#to_local(utc) ⇒ Object

Converts a UTC DateTime to local time based on the offset of this period.



58
59
60
61
62
# File 'lib/tzinfo/timezone_offset_info.rb', line 58

def to_local(utc)
  TimeOrDateTime.wrap(utc) {|wrapped|
    wrapped + @utc_total_offset
  }
end

#to_utc(local) ⇒ Object

Converts a local DateTime to UTC based on the offset of this period.



65
66
67
68
69
# File 'lib/tzinfo/timezone_offset_info.rb', line 65

def to_utc(local)
  TimeOrDateTime.wrap(local) {|wrapped|
    wrapped - @utc_total_offset
  }
end