c는 2 마침표의 내부 기간이어야합니다. 가장 우아한 방법으로 그것을 얻는 방법?루비에서 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 마침표의 내부 기간이어야합니다. 가장 우아한 방법으로 그것을 얻는 방법?루비에서 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
날짜 범위에 대한 특별한 것은 없다. 따라서 "범위 교차점"을 검색하여보다 효율적으로 처리하십시오 (예 : here). 지금 당신은 쓸 수 있습니다 :
(a1..a2) & (b1..b2)
yap ... 교차로는 내가 기억할 수없는 단어입니다. –
어느 날짜도 실제로 Time 개체가 아니거나 범위가 두 요소 사이의 모든 초마다 하나의 요소를 갖게되므로주의하십시오. – Pavling
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일] 당신이 현재 구현을보고 싶지 않아 @Sergio
. 너의 눈은 피를 흘릴 것이다. –
나는 당신이 얼마나 열심히 노력했는지 알고 싶다. –
"무엇을 먹으려고 했는가?"와 같은 일반적인 질문에 적합하지 않다. – pguardiario