Class: TZInfo::TimezoneOffset

Inherits:
Object
  • Object
show all
Defined in:
lib/tzinfo/timezone_offset.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) ⇒ TimezoneOffset

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



22
23
24
25
26
27
28
# File 'lib/tzinfo/timezone_offset.rb', line 22

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.



18
19
20
# File 'lib/tzinfo/timezone_offset.rb', line 18

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).



9
10
11
# File 'lib/tzinfo/timezone_offset.rb', line 9

def std_offset
  @std_offset
end

#utc_offsetObject (readonly)

The base offset of the timezone from UTC in seconds.



5
6
7
# File 'lib/tzinfo/timezone_offset.rb', line 5

def utc_offset
  @utc_offset
end

#utc_total_offsetObject (readonly)

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



13
14
15
# File 'lib/tzinfo/timezone_offset.rb', line 13

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 TimezoneOffset.



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

def ==(toi)
  toi.kind_of?(TimezoneOffset) &&
    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)


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

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 TimezoneOffset.

Returns:

  • (Boolean)


60
61
62
# File 'lib/tzinfo/timezone_offset.rb', line 60

def eql?(toi)
  self == toi
end

#hashObject

Returns a hash of this TimezoneOffset.



65
66
67
# File 'lib/tzinfo/timezone_offset.rb', line 65

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

#inspectObject

Returns internal object state as a programmer-readable string.



70
71
72
# File 'lib/tzinfo/timezone_offset.rb', line 70

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

#to_local(utc) ⇒ Object

Converts a UTC Time, DateTime or integer timestamp to local time, based on the offset of this period.



37
38
39
40
41
# File 'lib/tzinfo/timezone_offset.rb', line 37

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

#to_utc(local) ⇒ Object

Converts a local Time, DateTime or integer timestamp to UTC, based on the offset of this period.



45
46
47
48
49
# File 'lib/tzinfo/timezone_offset.rb', line 45

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