2012-03-04 62 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