2012-04-05 1 views
0

期限内であるかどうか:MM、およびACTUALTIMEかどうかを確認します。チェックイベントは、私は時間枠のためのモデルは、で定義されている

STARTTIME: HH:MM 
ENDTIME: HH:MM 

が、今私は形式HHで指定された時間ACTUALTIMEでクエリを実行する必要があります私の与えられたタイムフレームのうち、STARTTIMEENDTIMEで定義されています。

時間と分だけで定義されたRubyの時間オブジェクトは常に日付で表されるため、質問する可能性があります。 11時から15時の間の13:40日付部分を考慮に入れる。

答えて

0

は、私はTWを比較することができますメソッドを記述する方法を考え出しPhrogzアドバイスをありがとう彼らの日付から独立した時間。 ENDTIMEは24:00

def betweenTime(timestart, timeend, timecheck) 

getseconds = lambda{ |time| time.hour*60*60 + time.min*60 + time.sec} 

timestart = getseconds[timestart] 
timeend = getseconds[timeend] 
timecheck = getseconds[timecheck] 


if (timeend-timestart) < 0 
    timeend = timeend + (60*60*24) # add seconds for one day if timeend is after 24:00 
end 

timecheck.between?(timestart, timeend) 
end 
+0

Rubyのような別のメソッドを定義するのはJavaScriptのようなものではないことに注意してください。あなたは 'betweenTime'を呼び出すたびに同じスコープ(プライベートではない)で新しい' getseconds'メソッドを再定義します。代わりに 'getseconds = lambda {| time | ...}; timestart = getseconds [timestart] 'です。 – Phrogz

+0

良いヒント...ちょうどそれを追加しました。アドバイスのためのtnhx!これは 'timestartの場合には動作しないことを – JOxBERGER

+0

注:21:30' ' timeend:04:30' 'TIMECHECK:02:00 という事実に、あなたが変更していないことを' timecheck' 'timeend'が24:00より後である場合、この場合、数値は' timestart'より小さく、 'timeend'よりも小さく、' false'戻り値を返します。 –

1

あなた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 
+0

おかげPhrogz後であっても、それが私のために正常に動作し、 両方のソリューションは、ENDTIMEのような24:00以降でない限り、完璧に動作するように見える:STARTTIME夜7時00分。終わり03:00。 あなたのコードのhepで私は仕事をする方法を書く方法を見つけ出しました。 attach this here – JOxBERGER

関連する問題