2012-03-14 2 views
1

(이 달의 첫째부터 다음 달 처음으로) 날짜 범위 첫 번째 날짜가 2012-02-01 (YYYY-MM-DD 경우) 다음 날짜는 2012-03-01이어야합니다. 따라서 월을 증가 시키십시오. 그러나 날짜가 2012-12-01 인 경우 다음 날짜는 2013-01-01이어야합니다. 나는 nextMonth=((thisMonth) mod 12)+1을 처리하고 인 경우 nextYear를 thisYear+1으로 설정했습니다.루비 나는 이런 식으로 뭔가를 할

제 질문은 : 날짜 라이브러리를 사용하여 쉽게 할 수 있습니까?

답변

3

당신은 Date#>> 사용할 수 있습니다 : 시작 날짜는 월의 첫 번째가 아닌 경우

>> require 'date' 
=> true 
>> d = Date.new(2012,12,1) 
=> #<Date: 2012-12-01 ((2456263j,0s,0n),+0s,2299161j)> 
>> d >> 1 
=> #<Date: 2013-01-01 ((2456294j,0s,0n),+0s,2299161j)> 
>> (d..d>>1) 
=> #<Date: 2012-12-01 ((2456263j,0s,0n),+0s,2299161j)>..#<Date: 2013-01-01 ((2456294j,0s,0n),+0s,2299161j)> 

을하지만 여전히 다음 달의 첫 번째로 종료 날짜가 필요합니다, 당신은이 작업을 수행 할 수 있습니다

>> d = Date.new(2012,12,12) 
=> #<Date: 2012-12-12 ((2456274j,0s,0n),+0s,2299161j)> 
>> (d>>1) - (d.mday - 1) 
=> #<Date: 2013-01-01 ((2456294j,0s,0n),+0s,2299161j)> 
+0

굉장한, 나는 이것에 대해 결코 알지 못했다! +1 –

+0

답변에 대한 마이클 감사합니다. 그래도 그 날짜는 어떻게 되나요? 2012/12/23에 올 경우 2012/12/01에 해당 작업을 수행하고 싶습니다. –

+0

@HommerSmith 그건'd - (d.mday - 1)'이 될 것입니다. :-)이 답변을 upvote 및/또는 수락하는 것을 잊지 마십시오. 그렇게해야하므로 에티켓입니다. –

관련 문제