2012-03-04 6 views
3

私は過去12ヶ月間をリストに入れなければならない状況があります。リスト12前の月

例:

現在の月3月で、現在の年が2012だから、私はこのようになりますリストを取得したいです:

月(2011年)、4月(2011).. 2012年1月(2012年)、2月(2012年)、および3月(2012年)。

私は日付とカレンダーを使用してこれを達成しようとしていましたが、私は正しくアルゴリズムを取得できませんでした。

アイデア?ここで

答えて

5

はそれを行うにはGroovyの方法です:

use(groovy.time.TimeCategory) { 
    def today = new Date() 
    println today 
    12.times { i -> 
     println today - (i+1).months 
    } 
} 

あなたはGroovyの詳細を読むことができます。ここhere

+0

大変ありがとうございます! – marko

3

をさかのぼりdoelleriの提案に基づいて、完全な、機能バージョンです:

use(groovy.time.TimeCategory) { 
    def today = new Date() 
    13.times { i -> 
     println((today - i.months).format('MMMM (yyyy)')) 
    } 
} 

変更:

  1. 印刷を同じ場所で行うことができるようにループを修正しました(現在の月を別の場所に印刷するのではなく)。
  2. formatメソッドを使用して、要求したとおりに日付をレンダリングしました。出力をより整列させたい場合は、3文字の月を使用する形式として'MMM (yyyy)'を使用してみてください。

あなたはおそらく、あなたが使用したほうが良いかもしれませんので、リストとしてこれらを取得したいと思う:

def months 
use(groovy.time.TimeCategory) { 
    def today = new Date() 
    months = (0..13).collect { (today - it.months).format('MMMM (yyyy)') } 
} 

monthsと呼ばれる配列に月のデータを格納します。

+0

私は 'def months = []'が好きで、 '13x {months << ...}'を使います。 – doelleri

関連する問題