java.time.YearMonth
虽然其他答案在编写时是很好的答案,但它们现在已经过时了。自从 Java 8 引入了这个YearMonth
类,这个任务被大大简化了:
String date1 = "20/12/2011";
String date2 = "22/08/2012";
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/uuuu", Locale.ROOT);
DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("MMM/uuuu", Locale.ROOT);
YearMonth endMonth = YearMonth.parse(date2, dateFormatter);
for (YearMonth month = YearMonth.parse(date1, dateFormatter);
! month.isAfter(endMonth);
month = month.plusMonths(1)) {
System.out.println(month.format(monthFormatter));
}
这打印:
Dec/2011
Jan/2012
Feb/2012
Mar/2012
Apr/2012
May/2012
Jun/2012
Jul/2012
Aug/2012
请为第二次调用提供适当的语言环境,以DateTimeFormatter.ofPattern()
使用您的语言获取月份名称。第一个电话也是为了安全起见。