用红宝石假时间轮到最近的半小时或者小时?

问题描述:

我使用假时间显示在我的用户界面中。我正在操纵这样的随机时间。用红宝石假时间轮到最近的半小时或者小时?

date: Time.zone.now - (i % 9).days - rand(3).days - rand(2).hours + rand(60).minutes 

但是我想四舍五入到是下午3点35分变为3.30

你知道我怎么能做到这一点最接近的小时?

你可以用这个方法 延长时间类我通常做这在lib/core_ext目录

# lib/core_ext/time.rb 
class Time 
    def round_off(seconds = 60) 
    Time.at((self.to_f/seconds).round * seconds) 
    end 
end 

现在你可以做这样的事情

time = Time.zone.now - rand(3).days - rand(2).hours + rand(60).minutes 
time.round_off(30.minutes) 

我希望这能来帮助你

+0

你不需要'self.'在'self.to_f'中。 –

+0

谢谢我将在我的一个项目中测试我的代码,但我认为这也是代码风格 – MZaragoza