private List<String> getNearDate(String isYear){
List<String> resultList = new ArrayList<String>();
Calendar cal = Calendar.getInstance();
if("0".equals(isYear)){
//近六个月
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)+1); //要先+1,才能把本月的算进去
for(int i=0; i<6; i++){
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)-1); //逐次往前推1个月
resultList.add(String.valueOf(cal.get(Calendar.YEAR)) + (cal.get(Calendar.MONTH)+1 < 10 ? "0" + (cal.get(Calendar.MONTH)+1) : (cal.get(Calendar.MONTH)+1)));
}
}else {
//近两年
int nowYear = cal.get(Calendar.YEAR);
int lastYear = nowYear - 1 ;
resultList.add(String.valueOf(nowYear));
resultList.add(String.valueOf(lastYear));
}
return resultList;
}
试试大月的31日和1月的最后几天,会出错的。
例如在3月31日执行:
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)+1); //要先+1,才能把本月的算进去
时,会使得加1后变成4月31日,进而转化到了五月份。
3月31日执行获取近六个月时,会获取到四月份。
笨办法:
/**
* 获取近两年或者近六个月日期
* @param isYear
* @return
*/
private List<String> getDate(String isYear){
List<String> resultList = new ArrayList<String>();
Calendar cal = Calendar.getInstance();
if("0".equals(isYear)){
int MONTH_SIZE = 6 ;
//获取当前月
int month = cal.get(Calendar.MONTH)+1;
int year = cal.get(Calendar.YEAR);
String aResult = "";
if(month < 10){
aResult = year + "0" + month;
}else{
aResult = "" + year + month;
}
resultList.add(aResult);
//获取之前五个月
for(int i = 0; i<MONTH_SIZE - 1; i++){
month = month - 1;
if(0 == month){
month = 12;
year = year - 1;
}
if(month < 10){
aResult = year + "0" + month;
}else{
aResult = "" + year + month;
}
resultList.add(aResult);
}
}else {
//年度取近两年
int nowYear = cal.get(Calendar.YEAR);
int lastYear = nowYear - 1 ;
resultList.add(String.valueOf(nowYear));
resultList.add(String.valueOf(lastYear));
}
return resultList;
}