0

c は 2 周期の内側の周期でなければなりません。最もエレガントな方法でそれを取得する方法は?

a1=Date.current
a2=Date.current + 2.months

b1=Date.current + 1.month
b2=Date.current + 3.months

c=???

c.should_be [Date.current + 1.month, Date.current + 2.months]
4

2 に答える 2

2

急いで実装:

xs = (a1..a2).to_a & (b1..b2).to_a
(xs.first..xs.last)
# => Sun, 24 Jun 2012..Tue, 24 Jul 2012

日付の範囲について特別なことは何もありません。そのため、「範囲交差」を検索して、より効率的に実行します (たとえば、ここ)。これで、次のように記述できます。

(a1..a2) & (b1..b2)
于 2012-05-24T08:14:18.053 に答える
0
d= [a1, a2, b1, b2]
[*1..d.length/ 2].map do |dt| 
    d.shift(2) 
end.map do |dx| 
    Date.current+ (dx[1]- dx[0]) 
end

[2012 年 6 月 24 日 (日)、2012 年 7 月 24 日 (火)]

于 2012-05-24T08:23:58.287 に答える