Ruby on rails 四舍五入到最近的半小时或一小时?

Ruby on rails 四舍五入到最近的半小时或一小时?,ruby-on-rails,ruby,time,Ruby On Rails,Ruby,Time,我使用假时间在我的UI中显示。我在操纵时间,使之像这样随机 date: Time.zone.now - (i % 9).days - rand(3).days - rand(2).hours + rand(60).minutes 不过,我想把时间调到最近的一小时,即下午3:35变为3:30 你知道我怎么做吗?你可以用这个方法扩展时间类 我通常在lib/core\u ext目录中执行此操作 # lib/core_ext/time.rb class Time def round_off(s

我使用假时间在我的UI中显示。我在操纵时间,使之像这样随机

  date: Time.zone.now - (i % 9).days - rand(3).days - rand(2).hours + rand(60).minutes
不过,我想把时间调到最近的一小时,即下午3:35变为3:30


你知道我怎么做吗?

你可以用这个方法扩展时间类 我通常在lib/core\u 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\u f
。谢谢,我将在我的一个项目中测试我的代码,但我认为这也是代码风格