我如何在Ruby on Rails中检查今晚9点到9点(明天)之间的当前时间

Ama*_*r S 9 ruby datetime ruby-on-rails ruby-on-rails-3

我需要检查我当前的时间是否在指定的时间间隔(明天晚上9点到明天上午9点)之间.如何在Ruby on Rails中完成.

提前致谢

oco*_*odo 13

显然这是一个老问题,已经标记了正确的答案,但是,我想发布一个答案,可以帮助人们通过搜索找到相同的问题.

答案标记正确的问题是您当前的时间可能已经过了午夜,并且在那个时间点,建议的解决方案将失败.

这是考虑到这种情况的另一种选择.

now = Time.now

if (0..8).cover? now.hour 
# Note: you could test for 9:00:00.000 
#       but we're testing for BEFORE 9am.
#       ie. 8:59:59.999
  a = now - 1.day
else 
  a = now
end

start = Time.new a.year, a.month, a.day, 21, 0, 0
b = a + 1.day
stop = Time.new b.year, b.month, b.day, 9, 0, 0

puts (start..stop).cover? now
Run Code Online (Sandbox Code Playgroud)

同样,使用include?而不是cover?ruby 1.8.x.

当然你应该升级到Ruby 2.0