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