class Timing::TimeInZone
Constants
- REGEXP
Attributes
gmt_offset[R]
gmtoff[R]
time[R]
utc_offset[R]
zone_offset[R]
Public Class Methods
at(seconds, zone_offset=nil)
click to toggle source
# File lib/timing/time_in_zone.rb, line 116 def self.at(seconds, zone_offset=nil) new Time.at(seconds), zone_offset end
new(time, zone_offset=nil)
click to toggle source
# File lib/timing/time_in_zone.rb, line 13 def initialize(time, zone_offset=nil) @time = time @zone_offset = build_zone_offset(zone_offset || time.utc_offset) end
now(zone_offset=nil)
click to toggle source
# File lib/timing/time_in_zone.rb, line 112 def self.now(zone_offset=nil) new Time.now, zone_offset end
parse(text)
click to toggle source
# File lib/timing/time_in_zone.rb, line 120 def self.parse(text) match = text.length > 10 ? REGEXP.match(text) : nil zone_offset = match ? match.to_s : nil new Time.parse(text), zone_offset end
Public Instance Methods
+(seconds)
click to toggle source
# File lib/timing/time_in_zone.rb, line 26 def +(seconds) raise ArgumentError, "#{seconds} must be a valid seconds count" unless seconds.is_a? Numeric self.class.new (time + seconds), zone_offset end
-(seconds)
click to toggle source
# File lib/timing/time_in_zone.rb, line 31 def -(seconds) raise ArgumentError, "#{seconds} must be a time or a valid seconds count" unless seconds.respond_to? :to_f result = self.class.at (time.to_f - seconds.to_f), zone_offset seconds.is_a?(Numeric) ? result : result.to_f end
as_json(*args)
click to toggle source
# File lib/timing/time_in_zone.rb, line 76 def as_json(*args) iso8601 end
iso8601()
click to toggle source
# File lib/timing/time_in_zone.rb, line 72 def iso8601 strftime "%FT%T#{zone_offset.iso8601}" end
months_after(count)
click to toggle source
# File lib/timing/time_in_zone.rb, line 100 def months_after(count) Timing.months_after self, count end
months_ago(count)
click to toggle source
# File lib/timing/time_in_zone.rb, line 96 def months_ago(count) Timing.months_ago self, count end
strftime(format)
click to toggle source
# File lib/timing/time_in_zone.rb, line 63 def strftime(format) sanitized_format = format.gsub('%Z', '') .gsub('%z', zone_offset.to_s) .gsub('%:z', zone_offset.to_s(':')) .gsub('%::z', "#{zone_offset.to_s(':')}:00") time_with_offset.strftime sanitized_format end
to_json(*args)
click to toggle source
# File lib/timing/time_in_zone.rb, line 80 def to_json(*args) "\"#{as_json(*args)}\"" end
to_s()
click to toggle source
# File lib/timing/time_in_zone.rb, line 58 def to_s strftime '%F %T %z' end
Also aliased as: inspect
to_time()
click to toggle source
# File lib/timing/time_in_zone.rb, line 54 def to_time time end
to_utc()
click to toggle source
# File lib/timing/time_in_zone.rb, line 44 def to_utc self.class.new time, 0 end
to_zone(zone_offset)
click to toggle source
# File lib/timing/time_in_zone.rb, line 50 def to_zone(zone_offset) self.class.new time, zone_offset end
utc?()
click to toggle source
# File lib/timing/time_in_zone.rb, line 39 def utc? zone_offset == 0 end
Also aliased as: gmt?
years_after(count)
click to toggle source
# File lib/timing/time_in_zone.rb, line 108 def years_after(count) Timing.years_after self, count end
years_ago(count)
click to toggle source
# File lib/timing/time_in_zone.rb, line 104 def years_ago(count) Timing.years_ago self, count end
zone_offset=(zone_offset)
click to toggle source
# File lib/timing/time_in_zone.rb, line 18 def zone_offset=(zone_offset) @zone_offset = build_zone_offset zone_offset end
Private Instance Methods
build_zone_offset(zone_offset)
click to toggle source
# File lib/timing/time_in_zone.rb, line 130 def build_zone_offset(zone_offset) case zone_offset when ZoneOffset then zone_offset when Numeric then ZoneOffset.new(zone_offset) else ZoneOffset.parse(zone_offset) end end
method_missing(method, *args, &block)
click to toggle source
# File lib/timing/time_in_zone.rb, line 142 def method_missing(method, *args, &block) time.public_send method, *args, &block end
respond_to_missing?(method, include_private=false)
click to toggle source
Calls superclass method
# File lib/timing/time_in_zone.rb, line 146 def respond_to_missing?(method, include_private=false) super || time.respond_to?(method) end
time_with_offset()
click to toggle source
# File lib/timing/time_in_zone.rb, line 138 def time_with_offset time.getutc + zone_offset end