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]
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]
赶紧实施:
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)
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 日星期二]