前几个月清单12

时间:2012-03-04 13:14:22

标签: java grails date groovy

我的情况要求我将过去12个月列入清单。

示例:

当前月份是3月,当前年份是2012年。所以我希望得到一个如下所示的列表:

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

我一直在尝试使用日期和日历来完成此操作,但我并没有完全确定算法的正确性。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

这是一种Groovy方法:

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

您可以阅读有关Groovy日期here

的更多信息

答案 1 :(得分: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个字母的月份。
  3. 您可能希望将这些列为一个列表,因此您可能最好使用:

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

    将月份数据存储到名为months的数组中。