【问题标题】:Round to the nearest half an hour or hour in ruby fake time?在红宝石假时间中四舍五入到最接近的半小时或小时?
【发布时间】:2017-10-06 16:59:32
【问题描述】:

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

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

但是我想四舍五入到最接近的时间,即下午 3.35 变为 3.30

你知道我该怎么做吗?

【问题讨论】:

    标签: ruby-on-rails ruby time


    【解决方案1】:

    您可以使用此方法扩展时间类 我通常在 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.to_f 中不需要 self.
    • 谢谢,我将在我的一个项目中测试我的代码,但我认为这也是代码风格
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    相关资源
    最近更新 更多