Nヶ月前の月を求める

またまたRubyネタ。

Rails抜きでNヶ月前の月から今日までの月を求める必要があったので考えてみました。

すっごい遠回りして考えてるかもしれません。

rubyの配列はインデックスにマイナスを指定することができます。
その場合、参照する先は後ろから数えた値となります。

今日のコードはirbだけで試せます。
REPL最高。

1
2
3
a = [1,2,3]
a[0] # => 1
a[-1] # => 3

とりあえずNは3として、今月を含めて3ヶ月前を求めるには

1
2
month = [1,2,3,4,5,6,7,8,9,10,11,12]
month[Time.now.month-3]

1月ならば11月が帰ってきます。
2月ならば12月。3月なら1月となります。

インデックスは0始まりなのでそのあたりを考慮しないとあかんですね。

以上です。と書こうとしたけど、3ヶ月前から今日までの月でしたね。

1
3.times{ |i| p month[Time.now.month-i-1] }

先ほど述べたようにインデックスが0始まりなので-1してます。
配列で欲しいなら

1
3.times.map{ |i| p month[Time.now.month-i-1] }

かなぁ?

Comments