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]
答案 0 :(得分:2)
匆匆实施:
xs = (a1..a2).to_a & (b1..b2).to_a
(xs.first..xs.last)
# => Sun, 24 Jun 2012..Tue, 24 Jul 2012
一系列日期没有什么特别之处。因此,搜索“范围交叉点”以更有效地执行此操作(例如here)。现在你可以写:
(a1..a2) & (b1..b2)
答案 1 :(得分: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
[Sun,2012年6月24日,2012年7月24日星期二]