0

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

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

我需要获取包含两个元素的数组,例如:
[first_date, first_date + period] ... [some_date, last_date].

我会用某种循环来完成它,但也许有一些很好的奇特方法可以做到这一点:D。

4

2 回答 2

1

Date 有一个 step 方法:

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
于 2013-02-26T10:18:57.500 回答
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无论其长度如何。

于 2013-02-26T10:14:37.657 回答