class Labtime::Labtime
Constants
- DEFAULT_TIME_ZONE
Attributes
hour[RW]
min[RW]
sec[RW]
time_zone[RW]
year[RW]
Public Class Methods
from_decimal(decimal_labtime, year, time_zone = ActiveSupport::TimeZone.new("Eastern Time (US & Canada)"))
click to toggle source
# File lib/labtime/labtime.rb, line 41 def self.from_decimal(decimal_labtime, year, time_zone = ActiveSupport::TimeZone.new("Eastern Time (US & Canada)")) raise ArguementError, "No year supplied!" if year.blank? hour = decimal_labtime.to_i remainder = decimal_labtime - hour.to_f minute_labtime = 60 * remainder minute = minute_labtime.to_i remainder = minute_labtime - minute.to_f sec = (60 * remainder).round.to_i self.new(year, hour, minute, sec, time_zone) end
from_s(str, time_params = {}, time_zone = DEFAULT_TIME_ZONE)
click to toggle source
# File lib/labtime/labtime.rb, line 66 def self.from_s(str, time_params = {}, time_zone = DEFAULT_TIME_ZONE) time_captures = /(\d+)\:(\d{1,2})(\:(\d{1,2}))?(\s(\d\d\d\d))?\z/.match(str).captures time_params[:hour] ||= time_captures[0] time_params[:min] ||= time_captures[1] time_params[:sec] ||= time_captures[3] time_params[:year] ||= time_captures[5] self.new(time_params[:year], time_params[:hour], time_params[:min], time_params[:sec], time_zone) end
from_seconds(sec_time, year, time_zone = DEFAULT_TIME_ZONE)
click to toggle source
# File lib/labtime/labtime.rb, line 56 def self.from_seconds(sec_time, year, time_zone = DEFAULT_TIME_ZONE) hour = (sec_time / 3600.0).to_i sec_time = sec_time - (hour * 3600) min = (sec_time / 60.0).to_i sec_time = sec_time - (min * 60) sec = sec_time self.new(year, hour, min, sec, time_zone) end
new(year, hour, min, sec, time_zone = nil)
click to toggle source
Constructor
# File lib/labtime/labtime.rb, line 78 def initialize(year, hour, min, sec, time_zone = nil) @year = year.to_i @hour = hour.to_i @min = min.to_i @sec = sec.to_i @time_zone = time_zone || DEFAULT_TIME_ZONE end
parse(realtime)
click to toggle source
Class Methods
# File lib/labtime/labtime.rb, line 14 def self.parse(realtime) # Return nil if nil parameter return nil if realtime.nil? # Make sure datetime is an ActiveSupport:TimeWithZone object unless realtime.is_a?(ActiveSupport::TimeWithZone) raise ArgumentError, "realtime class #{realtime.class} is not ActiveSupport::TimeWithZone" end year = realtime.year # Use the start of the given year as a reference for finding Labtime Time.zone = realtime.time_zone reference_time = Time.zone.local(year) # find difference between the reference time and the time sent to the method difference_in_seconds = realtime.to_i - reference_time.to_i # convert difference in seconds to labtime hour = difference_in_seconds / 3600 min = (difference_in_seconds - (hour * 3600)) / 60 sec = (difference_in_seconds - (hour * 3600) - (min * 60)) self.new(year, hour, min, sec, realtime.time_zone) end
Public Instance Methods
<=>(other)
click to toggle source
For Comparable
# File lib/labtime/labtime.rb, line 93 def <=>(other) to_time <=> other.to_time end
add_seconds(sec)
click to toggle source
# File lib/labtime/labtime.rb, line 109 def add_seconds(sec) self.class.from_seconds(self.time_in_seconds + sec, self.year, self.time_zone) end
time_in_seconds()
click to toggle source
# File lib/labtime/labtime.rb, line 105 def time_in_seconds hour * 3600 + min * 60 + sec end
to_decimal()
click to toggle source
# File lib/labtime/labtime.rb, line 113 def to_decimal hour.to_f + (min.to_f/60.0) + (sec.to_f/3600.0) end
to_s()
click to toggle source
# File lib/labtime/labtime.rb, line 97 def to_s "#{year} #{hour}:#{min}:#{sec} #{time_zone.to_s}" end
to_short_s()
click to toggle source
# File lib/labtime/labtime.rb, line 101 def to_short_s "#{hour}:#{min}:#{sec}" end
to_time()
click to toggle source
Convert Labtime
to real time
# File lib/labtime/labtime.rb, line 87 def to_time reference_time = time_zone.local(year) reference_time + time_in_seconds end