class Timing::ZoneOffset

Constants

REGEXP

Public Class Methods

new(seconds) click to toggle source
Calls superclass method
# File lib/timing/zone_offset.rb, line 6
def initialize(seconds)
  raise ArgumentError, "#{seconds} is not a number" unless seconds.is_a? Numeric
  super
end
parse(expression) click to toggle source
# File lib/timing/zone_offset.rb, line 23
def self.parse(expression)
  match = REGEXP.match expression.strip

  raise ArgumentError, "Invalid time zone offset #{expression}" unless match

  sign = match.captures[0] == '-' ? -1 : 1
  hours = match.captures[1].to_i
  minutes = match.captures[2].to_i

  new (Interval.hours(hours) + Interval.minutes(minutes)) * sign
end

Public Instance Methods

inspect() click to toggle source
# File lib/timing/zone_offset.rb, line 19
def inspect
  "#{to_s} (#{to_f})"
end
iso8601() click to toggle source
# File lib/timing/zone_offset.rb, line 15
def iso8601
  "#{sign}#{hour.to_s.rjust(2, '0')}:#{minute.to_s.rjust(2, '0')}"
end
to_s(separator=nil) click to toggle source
# File lib/timing/zone_offset.rb, line 11
def to_s(separator=nil)
  "#{sign}#{hour.to_s.rjust(2, '0')}#{separator}#{minute.to_s.rjust(2, '0')}"
end

Private Instance Methods

hour() click to toggle source
# File lib/timing/zone_offset.rb, line 37
def hour
  Interval.new(to_f).to_hours.to_i
end
minute() click to toggle source
# File lib/timing/zone_offset.rb, line 41
def minute
  Interval.new(to_f % Interval.hours(1)).to_minutes.to_i
end
sign() click to toggle source
# File lib/timing/zone_offset.rb, line 45
def sign
  self < 0 ? '-' : '+'
end