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