【问题标题】:Listing 12 prior months清单 12 前几个月
【发布时间】:2012-03-04 13:14:21
【问题描述】:

我有一种情况需要我列出过去 12 个月的情况。

例子:

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

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

我一直在尝试使用日期和日历来完成这项工作,但我并没有设法让算法正确。

有什么想法吗?

【问题讨论】:

    标签: java grails date groovy


    【解决方案1】:

    这是一个 Groovy 的方法:

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

    您可以阅读有关 Groovy 日期的更多信息here

    【讨论】:

      【解决方案2】:

      这是基于 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 << ... }
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多