Почему бы не использовать between?
?
d1 = Time.new(2011,11,18,10)
d2 = Time.new(2011,11,18,22)
[
Time.new(2011,11,18,9),
Time.new(2011,11,18,12),
Time.new(2011,11,18,23),
].each{|d|
p d.between?(d1,d2)
}
Результат
false
true
false
В качестве альтернативы вы должны создать время от времени, основываясь на времени тестирования:
[
Time.new(2011,11,18,9),
Time.new(2011,11,18,12),
Time.new(2011,11,18,23),
].each{|d|
d1 = Time.new(d.year,d.month,d.day,10)
d2 = Time.new(d.year,d.month,d.day,22)
p d.between?(d1,d2)
}
Исходя из этого, вы можете продлить Time
:
class Time
def between_hours?( h1, h2)
d1 = Time.new(year,month,day,h1)
d2 = Time.new(year,month,day,h2)
self.between?(d1,d2)
end
end
[
Time.new(2011,11,18,9),
Time.new(2011,11,18,12),
Time.new(2011,11,18,23),
].each{|d|
p d.between_hours?(10,22)
}