1

我试图找出当前时区内两次之间的差异。我试图弄清楚是否要在两次之间拨打支持电话号码。即,我正在使用active_support宝石,我想做类似的事情

  • t= 当前时间
  • o= 根据当前日期的开放时间(上午 9 点)
  • c= 根据当前日期的关闭时间 (5PM)
  • 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 回答