我有一个情况需要在列表中获取过去12个月的日期。
例如:
当前月份为 3 月,当前年份为 2012 年。所以我想要一个类似这样的列表:
2011 年 3 月,2011 年 4 月……2011 年 12 月,2012 年 1 月,2012 年 2 月和 2012 年 3 月。
我一直试图使用 Date 和 Calendar 完成这个任务,但我没有成功地得到正确的算法。
有任何想法吗?
use(groovy.time.TimeCategory) {
def today = new Date()
println today
12.times { i ->
println today - (i+1).months
}
}
您可以在这里了解更多关于Groovy日期的信息。
这里是一个完整的、可运行的版本,基于doelleri的建议:
use(groovy.time.TimeCategory) {
def today = new Date()
13.times { i ->
println( (today - i.months).format('MMMM (yyyy)') )
}
}
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