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

时间:2017-10-06 16:59:33

标签: 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

你知道怎么做吗?

1 个答案:

答案 0 :(得分:5)

您可以使用此方法扩展时间类 我通常在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)

我希望这能够帮到你