记录一下踩过的小水坑,也请大佬指教
注:系统时间必须为当月29、30、31日才会重现此问题,如系统时间为2019年10月28号不会出现此问题
public String[] getMonthList(String year, String month) {
String[] months = new String[12];
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, Integer.parseInt(year));
cal.set(Calendar.MONTH, Integer.parseInt(month) - 1);
for (int i = 0; i < 12; i++) {
months[11 - i] = cal.get(Calendar.YEAR) + "年" + (String.valueOf(cal.get(Calendar.MONTH) + 1)) + "月";
//逐次往前推1个月
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1);
}
return months;
}
Arrays.asList(this.getMonthLists("2019","11")).stream().forEach(x -> System.out.println(x));
输出结果:
2019年1月
2019年2月
2019年3月
2019年3月
2019年4月
2019年5月
2019年6月
2019年7月
2019年8月
2019年9月
2019年10月
2019年11月
修正后输出结果正确
public String[] getMonthList(String year, String month) {
String[] months = new String[12];
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, Integer.parseInt(year));
cal.set(Calendar.MONTH, Integer.parseInt(month) - 1);
//设置日期 添加设置日期解决3月份重复问题
cal.set(Calendar.DAY_OF_MONTH, 1);
for (int i = 0; i < 12; i++) {
months[11 - i] = cal.get(Calendar.YEAR) + "年" + (String.valueOf(cal.get(Calendar.MONTH) + 1)) + "月";
//逐次往前推1个月
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1);
}
return months;
}