Ruby中的时间差异

时间:2013-01-24 23:44:06

标签: ruby activesupport

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

的事情
  • t =当前时间
  • o =根据当前日期(上午9点)的开放时间
  • c =根据当前日期(下午5点)的关闭时间
  • call_open =我们打开了吗?

有人能帮忙吗?

3 个答案:

答案 0 :(得分:2)

我相信你可以做到

call_open = t.between?(o, c)

答案 1 :(得分:0)

t = Time.zone.now
o = Time.zone.today + 8.hours
c = Time.zone.today + 17.hours
call_open = t <= c && t >= o

答案 2 :(得分: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