я могу получить текущий месяц в этом формате
val dateFormat: SimpleDateFormat = new SimpleDateFormat("YYYYMM")
dateFormat.format(new Date())//201408
но как получить
List(201408,201409,201410,201411,201412,201501)
(Синтаксис 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);
}
for (int i = 0; i< 6; i++) { dates.add(formatter.format(yearMonth.plusMonths(i));}
В 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
YYYY
. Вы, вероятно, хотитеyyyy
. Какую версию Java вы используете? На Java 8 я бы использовалjava.time
; до этого я использовал Joda Time. Все это может быть сделано сCalendar
, но использование любого из них было бы лучше.