我有一个日期范围(从,到),我想通过不同的间隔(每天,每周,每月,...)循环
我怎样才能循环这个数据范围?
- 最新情况 *
谢谢你的回答,我想出了以下:
interval = 'week' # month, year
start = from
while start < to
stop = start.send("end_of_#{interval}")
if stop > to
stop = to
end
logger.debug "Interval from #{start.inspect} to #{stop.inspect}"
start = stop.send("beginning_of_#{interval}")
start += 1.send(interval)
end
这将以周、月或年为间隔遍历日期范围,并考虑给定间隔的开始和结束。
由于我没有在我的问题中提到这一点,我选择了把我推向正确方向的答案。
5条答案
按热度按时间llew8vvj1#
是否循环,直到
from
日期加上1.day
、1.week
或1.month
大于to
日期?fcwjkofz2#
在Ruby 1.9中,我在Range上添加了自己的方法,用于遍历时间范围:
然后,你可以这样调用它,例如(我的例子使用了一个Rails特有的方法:15分钟):
注意,这个方法使用了Ruby1.9的约定,如果没有给定代码块,枚举方法返回一个枚举数,这样就可以将枚举数串在一起。
更新
我已经将Range #time_step方法添加到my personal
core_extensions
"gem"中,如果您想在Rails项目中使用它,只需将以下代码添加到Gemfile中:nqwrtyyt3#
succ方法在1.9范围内被弃用。想在一周内做同样的事情,我得出了这个解决方案:
返回间隔中周的数组.很容易适应月.
1sbrub3j4#
您可以在Range对象上使用step方法。http://ruby-doc.org/core-1.9.3/Range.html#method-i-step
2q5ifsrm5#
想想时间戳,它们是普通的整数,你可以对它们使用基本的算术。我的解决方案是在时间戳的帮助下创建数组。