Список предстоящих шести месяцев, включая этот месяц

1

я могу получить текущий месяц в этом формате

val dateFormat: SimpleDateFormat = new SimpleDateFormat("YYYYMM")
dateFormat.format(new Date())//201408

но как получить

List(201408,201409,201410,201411,201412,201501)
  • 0
    Вы почти наверняка не хотите использовать YYYY . Вы, вероятно, хотите yyyy . Какую версию Java вы используете? На Java 8 я бы использовал java.time ; до этого я использовал Joda Time. Все это может быть сделано с Calendar , но использование любого из них было бы лучше.
  • 0
    Обратите внимание, что ваш заголовок говорит о 7 месяцах, но вы показали только 6.
Теги:
datetime

2 ответа

3
Лучший ответ

(Синтаксис Java, но я уверен, что вы можете легко изменить его на Scala).

В порядке убывания предпочтения...

С Java 8:

// TODO: Which time zone are you interested in?
YearMonth yearMonth = YearMonth.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMM");
List<String> dates = new ArrayList<>();
for (int i = 0; i < 6; i++) {
    dates.add(formatter.format(yearMonth.plusMonths(i)));
}

С Джодой Время:

// TODO: Which time zone are you interested in?
YearMonth yearMonth = new YearMonth();
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMM");
List<String> dates = new ArrayList<>();
for (int i = 0; i < 6; i++) {
    dates.add(formatter.print(yearMonth.plusMonths(i)));
}

С Calendar:

// TODO: Which time zone are you interested in?
Calendar calendar = Calendar.getInstance();
DateFormat format = new SimpleDateFormat("yyyyMM");
List<String> dates = new ArrayList<>();
for (int i = 0; i < 6; i++) {
    dates.add(format.format(calendar.getTime()));
    calendar.add(Calendar.MONTH, 1);
}
  • 0
    Я думаю, что это более строго вперед, чтобы написать (используйте время joda в качестве примера): for (int i = 0; i< 6; i++) { dates.add(formatter.format(yearMonth.plusMonths(i));}
  • 0
    @AdrianShum: Что вы подразумеваете под "строгим форвардом"? В любом случае будет работать. Я согласен, что это немного аккуратнее - и я исправлю это - но оба должны быть в порядке.
Показать ещё 1 комментарий
1

В scala, С Joda Time:

val yearMonth = new YearMonth();
val formatter = DateTimeFormat.forPattern("yyyyMM");
val dates = (0 to 5).map {
    i=>formatter.print(yearMonth.plusMonths(i)).toInt 
}.toList
  • 0
    val date = (от 0 до 5) .map (formatter.print (yearMonth.plusMonths (_)). toInt) .toList // неизменяемый список

Ещё вопросы

Сообщество Overcoder
Наверх
Меню