あなたHH:MM
が文字列であり、彼らは常に(例えば「3時08分」)ゼロが追加された場合、あなただけの単純な文字列比較を使用することができます:あなたのSTARTTIMEおよびENDTIMEがに来ている場合は
irb:02> first = "03:17"; last = "11:54"
#=> "11:54"
irb:03> range = first..last
#=> "03:17".."11:54"
irb:04> range.include? "00:00"
#=> false
irb:05> range.include? "03:50"
#=> true
irb:06> range.include? "03:09"
#=> false
irb:07> range.include? "12:17"
#=> false
irb:08> range.include? "11:17"
#=> true
をTime
のインスタンスとしてルビー、あなたが(my_time.strftime('%H:%M')
)文字列に変換する方法を記述するか、またはあなたは、単にコンパレータを書くことができます:
# Returns true if hour:min is between the times in t1 and t2
def between(hour,min,t1,t2)
t1.hour<=hour && hour<=t2.hour && t1.min<=min && min<=t2.min
end
Rubyのような別のメソッドを定義するのはJavaScriptのようなものではないことに注意してください。あなたは 'betweenTime'を呼び出すたびに同じスコープ(プライベートではない)で新しい' getseconds'メソッドを再定義します。代わりに 'getseconds = lambda {| time | ...}; timestart = getseconds [timestart] 'です。 – Phrogz
良いヒント...ちょうどそれを追加しました。アドバイスのためのtnhx!これは 'timestartの場合には動作しないことを – JOxBERGER
注:21:30' ' timeend:04:30' 'TIMECHECK:02:00 という事実に、あなたが変更していないことを' timecheck' 'timeend'が24:00より後である場合、この場合、数値は' timestart'より小さく、 'timeend'よりも小さく、' false'戻り値を返します。 –