【问题标题】:Ruby/Rails: get time in closest 15-min incrementRuby/Rails:以最接近的 15 分钟增量获取时间
【发布时间】:2023-04-08 04:49:01
【问题描述】:

我正在尝试将当前时间四舍五入到最接近的 15 分钟增量。

例如,如果当前时间是“下午 4:37”,我希望它四舍五入到“下午 4:30”。如果是“下午 4 点 41 分”,则应该四舍五入到“下午 4 点 45 分”。

原因是我有一个以 15 分钟为增量的 HTML 选择,我想将其默认为根据时间选择最接近的选项。

我遇到了一些有效的代码,但看起来很笨拙:

increment = 15*60                                          # => 900 (15 min in seconds)
current_time = Time.zone.now                               # => Mon, 27 Aug 2018 17:50:31 EDT -04:00
Time.at((current_time.to_r / increment).round * increment) # => 2018-08-27 17:45:00 -0400

我很惊讶没有像 Time.now.round_to_closest(increment_in_min: 15) 这样的内置时间函数

它在那里,我只是想念它吗?

【问题讨论】:

  • 您可以使用有效的代码编写该方法,并将其添加到 Time 作为改进?
  • @dinjas:我认为您是正确的,这是该问题的重复。我应该关闭/删除这个问题,还是有链接/合并类似问题的流程?
  • 将其标记为重复,它将链接到标题中的另一个问题。无需删除问题。

标签: ruby-on-rails ruby time rounding


【解决方案1】:

这可能看起来很笨拙,因为您必须在其中几行上做一些数学运算,但这对我来说似乎是一个很好的解决方案。有时你不得不为了功能而放弃优雅。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多