首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Ruby中如何将时间向下舍入到最接近的15分钟?

在Ruby中如何将时间向下舍入到最接近的15分钟?
EN

Stack Overflow用户
提问于 2009-01-16 01:59:34
回答 9查看 32.8K关注 0票数 72

有没有一种简单的方法将时间四舍五入到最近的15分钟?

这就是我目前正在做的事情。有没有更简单的方法呢?

代码语言:javascript
复制
t = Time.new
rounded_t = Time.local(t.year, t.month, t.day, t.hour, t.min/15*15)
EN

回答 9

Stack Overflow用户

发布于 2010-11-15 16:45:53

我想我应该发布另一个解决方案,提供向上和向下舍入到给定的最接近的秒数。哦,而且这不会像其他一些解决方案那样改变时区。

代码语言:javascript
复制
class Time
  def round(sec=1)
    down = self - (self.to_i % sec)
    up = down + sec

    difference_down = self - down
    difference_up = up - self

    if (difference_down < difference_up)
      return down
    else
      return up
    end
  end
end

t = Time.now                             # => Mon Nov 15 10:18:29 +0200 2010
t.round(15.minutes)                      # => Mon Nov 15 10:15:00 +0200 2010
t.round(20.minutes)                      # => Mon Nov 15 10:20:00 +0200 2010
t.round(60.minutes)                      # => Mon Nov 15 10:00:00 +0200 2010

在x.minutes特性的示例中使用了ActiveSupport。您可以使用15 * 60。

基于该方案可以很容易地实现floor和ceil方法。

票数 22
EN

Stack Overflow用户

发布于 2013-06-15 05:05:36

我找到了一个可读性很强的解决方案;

这将使您的时间四舍五入到最后15分钟。您可以将15.minutes更改为所有可能的时间刻度。

代码语言:javascript
复制
Time.at(Time.now.to_i - (Time.now.to_i % 15.minutes))
票数 17
EN

Stack Overflow用户

发布于 2015-05-08 00:54:33

我编写了Rounding gem来处理这类情况。

向下舍入时间就像在时间上调用floor_to一样简单。还支持向上舍入和舍入到最近的值(ceil_toround_to)。

代码语言:javascript
复制
require "rounding"

Time.current.floor_to(15.minutes) # => Thu, 07 May 2015 16:45:00 UTC +00:00
Time.current.ceil_to(15.minutes)  # => Thu, 07 May 2015 17:00:00 UTC +00:00
Time.current.round_to(15.minutes) # => Thu, 07 May 2015 16:45:00 UTC +00:00

保留原始时间的时区(本例中为UTC)。你不需要加载ActiveSupport --你可以写floor_to(15*60),它会工作的很好。gem使用Rational数字来避免舍入误差。您可以通过提供偏移量round_to(1.week, Time.parse("2015-5-4 00:00:00 UTC"))来舍入到最近的星期一。我们在生产中使用它。

我写了一个blog post来解释更多。希望这对你有帮助。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/449271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档