在红宝石伪造时间中舍入到最近的半小时或一个小时?

Zen*_*fin 1 ruby time ruby-on-rails

我正在使用假时间在UI中显示。我正在操纵这样的时间是随机的。

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

但是我想四舍五入到3.35 pm的最近时间变成3.30

你知道我该怎么做吗?

MZa*_*oza 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
Run Code Online (Sandbox Code Playgroud)

现在你可以做类似的事情

time = Time.zone.now - rand(3).days - rand(2).hours + rand(60).minutes
time.round_off(30.minutes)
Run Code Online (Sandbox Code Playgroud)

我希望这可以为您提供帮助