Перечисление 12 предыдущих месяцев - PullRequest
3 голосов
/ 04 марта 2012

У меня есть ситуация, которая требует, чтобы я получил 12 последних месяцев в списке.

Пример:

Текущий месяц - март, а текущий год - 2012. Поэтому я хочучтобы получить список, который выглядит следующим образом:

март (2011), апрель (2011) ... декабрь (2011), январь (2012), февраль (2012) и март (2012).

Я пытался сделать это, используя дату и календарь, мне не совсем удалось получить правильный алоритм.

Есть идеи?

Ответы [ 2 ]

5 голосов
/ 04 марта 2012

Вот способ Groovy:

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

Подробнее о датах Groovy можно узнать здесь

3 голосов
/ 05 марта 2012

Вот полная, работающая версия, основанная на предложении doelleri:

use(groovy.time.TimeCategory) {
    def today = new Date()
    13.times { i ->
        println( (today - i.months).format('MMMM (yyyy)') )
    }
}

Изменения, которые я сделал:

  1. Я изменил цикл, чтобы печать могла происходить в том жеместо (вместо печати текущего месяца в другом месте).
  2. Я использовал метод format, чтобы отобразить дату точно так, как вы просили.Если вы хотите, чтобы выходные данные выстраивались лучше, попробуйте использовать 'MMM (yyyy)' в качестве формата, который использует трехбуквенные месяцы.

Возможно, вы захотите получить их в виде списка, так что вы можетелучше использовать:

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

, который хранит данные месяца в массиве под названием months.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...