2012-03-14 16 views
1

(今月の最初から翌月の最初に)日付範囲の最初の日付は2012年2月1日(YYYY-MM-DDの場合)、次の日付は2012-03-01でなければなりません。だから、月を増やしてください。 ただし、日付が2012-12-01の場合、次の日付は2013-01-01である必要があります。私はnextMonth=((thisMonth) mod 12)+1をやっていて、thisMonth = 12なら次の年を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)'になります。 :-)この回答をアップヴォートして受け入れることを忘れないでください。 –

関連する問題