列出过去12个月的清单

3

我有一个情况需要在列表中获取过去12个月的日期。

例如:

当前月份为 3 月,当前年份为 2012 年。所以我想要一个类似这样的列表:

2011 年 3 月,2011 年 4 月……2011 年 12 月,2012 年 1 月,2012 年 2 月和 2012 年 3 月。

我一直试图使用 Date 和 Calendar 完成这个任务,但我没有成功地得到正确的算法。

有任何想法吗?

2个回答

5
这里有一个使用Groovy的方法来实现它:
use(groovy.time.TimeCategory) {
    def today = new Date()
    println today
    12.times { i ->
        println today - (i+1).months
    }
}

您可以在这里了解更多关于Groovy日期的信息。


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的数组中。

我喜欢 def months = [] 然后使用 13.times { months << ... } - doelleri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接