Ruby根据给定的时间段获取日期数组

时间:2013-02-26 09:47:09

标签: ruby-on-rails ruby date

我有疑问是否可能有一个很好的简单解决方案来完成这项任务:

我有first_date = "2011-02-02"last_date = "2013-01-20"period = 90 (days)

我需要获得带有两个元素的数组,例如:
[first_date, first_date + period] ... [some_date, last_date]

我会用某种循环制作它但也许有一些很好的方式来做到这一点:D。

2 个答案:

答案 0 :(得分:1)

日期有一个步骤方法:

require 'date'
first_date = Date.parse("2011-02-02")
last_date = Date.parse("2013-02-20")
period = 90

p first_date.step(last_date-period, period).map{|d| [d, d+period]}
#or
p first_date.step(last_date, period).map.each_cons(2).to_a

答案 1 :(得分:0)

require 'pp'
require 'date'

first_date=Date.parse "2011-02-02"
last_date=Date.parse "2013-01-20"
period = 90
periods = []

current = first_date
last = current + period

while(last < last_date ) do
  periods << [current, last]
  current = last  
  last = current + period
end

if periods[-1][1] != last_date  
  periods << [periods[-1][1], last_date]
end

p periods

我假设最后一段时间必须以last_date结束,无论其长度如何,正如您的问题所暗示的那样。