用红宝石假时间轮到最近的半小时或者小时?
问题描述:
我使用假时间显示在我的用户界面中。我正在操纵这样的随机时间。用红宝石假时间轮到最近的半小时或者小时?
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)
我希望这能来帮助你
你不需要'self.'在'self.to_f'中。 –
谢谢我将在我的一个项目中测试我的代码,但我认为这也是代码风格 – MZaragoza