Class: Data::LocalTime

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/barometer/data/local_time.rb

Overview

A simple Time class

A time class that represents the local time … it has no concept of time zone or date

Direct Known Subclasses

LocalDateTime

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(h = 0, m = 0, s = 0) ⇒ LocalTime

Returns a new instance of LocalTime.



13
14
15
16
17
18
# File 'lib/barometer/data/local_time.rb', line 13

def initialize(h=0,m=0,s=0)
  self.hour = h
  self.min = m
  self.sec = s
  self
end

Instance Attribute Details

#hourObject

Returns the value of attribute hour.



11
12
13
# File 'lib/barometer/data/local_time.rb', line 11

def hour
  @hour
end

#minObject

Returns the value of attribute min.



11
12
13
# File 'lib/barometer/data/local_time.rb', line 11

def min
  @min
end

#secObject

Returns the value of attribute sec.



11
12
13
# File 'lib/barometer/data/local_time.rb', line 11

def sec
  @sec
end

Class Method Details

.parse(string) ⇒ Object



68
69
70
71
72
73
# File 'lib/barometer/data/local_time.rb', line 68

def self.parse(string)
  return string if string.is_a?(Data::LocalTime)
  local = Data::LocalTime.new
  local.parse(string)
  local
end

Instance Method Details

#+(seconds) ⇒ Object



96
97
98
99
100
101
102
103
104
105
# File 'lib/barometer/data/local_time.rb', line 96

def +(seconds)
  local_time = Data::LocalTime.new
  if seconds.is_a?(Fixnum) || seconds.is_a?(Float)
    local_time.sec = self.total_seconds + seconds.to_i
  elsif seconds.is_a?(Data::LocalTime)
    this_total = self.total_seconds + seconds.total_seconds
    local_time.sec = this_total
  end
  local_time
end

#-(seconds) ⇒ Object



107
108
109
110
111
112
113
114
115
116
117
# File 'lib/barometer/data/local_time.rb', line 107

def -(seconds)
  local_time = Data::LocalTime.new
  if seconds.is_a?(Fixnum) || seconds.is_a?(Float)
    local_time.sec = self.total_seconds - seconds.to_i
  elsif seconds.is_a?(Data::LocalTime)
    #self.sec += seconds.total_seconds
    this_total = self.total_seconds - seconds.total_seconds
    local_time.sec = this_total
  end
  local_time
end

#<=>(other) ⇒ Object

Raises:

  • (ArgumentError)


86
87
88
89
90
91
92
93
94
# File 'lib/barometer/data/local_time.rb', line 86

def <=>(other)
  if other.is_a?(String) || other.is_a?(Time) || other.is_a?(DateTime)
    the_other = Data::LocalTime.parse(other)
  else
    the_other = other
  end
  raise ArgumentError unless the_other.is_a?(Data::LocalTime)
  total_seconds <=> the_other.total_seconds
end

#diff(other) ⇒ Object

Raises:

  • (ArgumentError)


119
120
121
122
123
# File 'lib/barometer/data/local_time.rb', line 119

def diff(other)
  the_other = Data::LocalTime.parse(other)
  raise ArgumentError unless the_other.is_a?(Data::LocalTime)
  (self.total_seconds - the_other.total_seconds).to_i.abs
end

#nil?Boolean

Returns:

  • (Boolean)


131
# File 'lib/barometer/data/local_time.rb', line 131

def nil?; @hour == 0 && @min == 0 && @sec == 0; end

#parse(string) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/barometer/data/local_time.rb', line 54

def parse(string)
  if string.is_a?(Time) || string.is_a?(DateTime)
    @hour = string.hour
    @min = string.min
    @sec = string.sec
  elsif string.is_a?(String)
    time = Time.parse(string)
    @hour = time.hour
    @min = time.min
    @sec = time.sec
  end
  self
end

#to_s(seconds = false) ⇒ Object



125
126
127
128
129
# File 'lib/barometer/data/local_time.rb', line 125

def to_s(seconds=false)
  time = self.to_t
  format = (seconds ? "%I:%M:%S %p" : "%I:%M %p")
  time.strftime(format).downcase
end

#to_tObject

convert to a Time class



77
78
79
80
# File 'lib/barometer/data/local_time.rb', line 77

def to_t
  date = Date.today
  Time.local(date.year,date.month,date.day,@hour,@min,@sec)
end

#total_secondsObject



82
83
84
# File 'lib/barometer/data/local_time.rb', line 82

def total_seconds
  (@hour * 60 * 60) + (@min * 60) + @sec
end