/**
* 求日期月份跨度
* @param date1
* @param date2
* @return
* @throws Exception
* @作者 80303857
*/
public static List<String> getMs (String date1, String date2) throws Exception{
List<String> result = new ArrayList<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(sdf.parse(date1));
c2.setTime(sdf.parse(date2));
int m1 = c1.get(Calendar.MONTH)+1;
int m2 = c2.get(Calendar.MONTH)+1;
int y1 = c1.get(Calendar.YEAR);
int y2 = c2.get(Calendar.YEAR);
while (y1!=y2||m1!=m2){
StringBuffer sb = new StringBuffer();
if(y1!=y2){
if (y1<y2){
sb.append(y1).append(m1<10?"0"+m1:m1);
result.add(sb.toString());
m1++;
if (m1>12){
y1++;
m1=1;
}
}else{
sb.append(y2).append(m2<10?"0"+m2:m2);
result.add(sb.toString());
m2++;
if (m2>12){
y2++;
m2=1;
}
}
}else{
if (m1<m2){
sb.append(y1).append(m1<10?"0"+m1:m1);
result.add(sb.toString());
m1++;
}else{
sb.append(y2).append(m2<10?"0"+m2:m2);
result.add(sb.toString());
m2++;
}
}
}
return result;
}
比如2016-11-01至2017-02-03那么返回结果为201611,201612,101701。并不会包含最后一个值或相等月份的值。