1

現在のタイムゾーン内の2つの時間の違いを理解しようとしています。2回の間にサポート電話番号に電話するかどうかを調べようとしています。つまり、私はactive_support宝石を使用していて、次のようなことをしたいです

  • t=現在の時刻
  • o=現在の日付に従った営業時間(午前9時)
  • c=現在の日付に従った終了時間(午後5時)
  • call_open=私たちは開いていますか?

誰かが助けることができるでしょうか?

4

3 に答える 3

2

私はあなたができると信じています

call_open = t.between?(o, c)

于 2013-01-24T23:47:26.243 に答える
0
t = Time.zone.now
o = Time.zone.today + 8.hours
c = Time.zone.today + 17.hours
call_open = t <= c && t >= o
于 2013-01-24T23:48:53.353 に答える
0

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
于 2013-01-25T00:12:53.100 に答える