public class TestDemoTwo {
public static void main(String[] args) {
List months = getMonths(“2020-01-01”, “2021-03-31”);
System.out.println(months);
}
/**
* 返回两个时间段内的每个月份
* @param startTime 开始时间
* @param endTime 结束时间
* @return
*/
public static List<String> getMonths(String startTime, String endTime){
Date date = DateUtil.parse(startTime);
Calendar c = Calendar.getInstance() ;
c.setTime( date);
//获取开始月份
int startMonth = c.get(Calendar.MONTH) + 1;
//获取开始年份
int startYear = c.get(Calendar.YEAR);
Date dateEnd = DateUtil.parse(endTime);
Calendar cEnd = Calendar.getInstance();
cEnd.setTime(dateEnd);
//获取结束月份
int endMonth = cEnd.get(Calendar.MONTH) + 1;
//获取结束月份
int endYear = cEnd.get(Calendar.YEAR);
List<String> list = new ArrayList<>();
if (startYear == endYear){
for (int i = startMonth; i < endMonth; i++){
String yearAndMonth = startYear + "-" + i;
list.add(yearAndMonth);
}
}
if (endYear > startYear){
//相差年份
int i = endYear - startYear;
//获取循环次数
int count = 12 - startMonth + (i-1)*12 + endMonth;
for (i = 0; i <= count; i++){
String yearAndMonth = startYear + "-" + startMonth;
startMonth++;
if (startMonth == 13){
startMonth = 1;
startYear++;
}
list.add(yearAndMonth);
}
}
return list;
}
}