2012-03-04 105 views
3

我有一種情況,需要我在清單中找到前12個月。清單12前幾個月

例子:

當前的月份是3,而當前年份是2012年。所以我想,看起來像這樣的列表:

三月(2011年),四月(2011).. 。2011年12月,2012年1月,2012年2月,2012年3月。

我一直在嘗試使用日期和日曆來完成此操作,但我沒有完全設法使對數正確。

任何想法?

回答

5

這裏是一個Groovy的方式來做到這一點:

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

你可以閱讀更多關於Groovy日期here

+0

非常感謝大家! – marko 2012-03-05 07:36:10

3

下面是基於doelleri的建議一個完整的,功能版本:

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

的我所做的更改:

  1. 我修改了循環,以便可以在相同的位置進行打印(而不是在當前的月份打印)。
  2. 我用format方法來完全按照您的要求渲染日期。如果您希望輸出更好地排列,請嘗試使用'MMM (yyyy)'作爲格式,該格式使用3個字母的月份。

你可能會想要得到這些作爲一個列表,這樣你就可以使用會更好:

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

在一個月數據存儲到一個數組稱爲months

+0

我喜歡'def months = []'然後使用'13.times {months << ...} – doelleri 2012-03-05 08:08:24