現在のタイムゾーン内の2つの時間の違いを理解しようとしています。2回の間にサポート電話番号に電話するかどうかを調べようとしています。つまり、私はactive_support
宝石を使用していて、次のようなことをしたいです
t
=現在の時刻o
=現在の日付に従った営業時間(午前9時)c
=現在の日付に従った終了時間(午後5時)call_open
=私たちは開いていますか?
誰かが助けることができるでしょうか?
現在のタイムゾーン内の2つの時間の違いを理解しようとしています。2回の間にサポート電話番号に電話するかどうかを調べようとしています。つまり、私はactive_support
宝石を使用していて、次のようなことをしたいです
t
=現在の時刻o
=現在の日付に従った営業時間(午前9時)c
=現在の日付に従った終了時間(午後5時)call_open
=私たちは開いていますか?誰かが助けることができるでしょうか?
私はあなたができると信じています
call_open = t.between?(o, c)
t = Time.zone.now
o = Time.zone.today + 8.hours
c = Time.zone.today + 17.hours
call_open = t <= c && t >= o
Time を使用して範囲を作成できます。これにより、含まれているかどうかを簡単にテストできます。
t1 = Time.now
sleep 1
t2 = Time.now
sleep 1
t3 = Time.now
(t1.to_i .. t3.to_i) === t2.to_i # => true
(t1.to_f .. t3.to_f) === t2.to_f # => true
(t1.to_f .. t2.to_f) === t3.to_f # => false
解析を使用してそれを理解できます。
starttime = Time.parse('2013/01/24 9AM') # => 2013-01-24 09:00:00 -0700
endtime = Time.parse('2013/01/24 5PM') # => 2013-01-24 17:00:00 -0700
(starttime.to_f .. endtime.to_f) === Time.parse('2013/01/24 3PM').to_f # => true
また、時間のみで作業できるため、日付に依存しません。
(t1.hour .. t3.hour) === t2.hour # => true