功能说明
获得最近几年的学年学期
-1为去年,0为本年,1为明年
思路
首先获得当前月份,判断当前学年学期
以此为基本方法,通过用户传进的参数将相应的月份计算得出作为基本方法的当前月得到学年学期
代码
/**
* 获得学年学期(包含本学期)
* 例如getYearSemesterList(-1,1),获取结果(2016-2017学年第二学期,2017-2018学年第一学期,2017-2018学年第二学期).
* @param startSemester 当前学年学期为0,从当前学年学期开始想获取的之前学年学期的数量
* @param endSemester 当前学年学期为0,从当前学年学期开始想获取的之后学年学期的数量
* @return LinkedHashMap<String,String> 学年学期代码-名字map对象
*/
public static LinkedHashMap<String, String> getYearSemesterMap(int startSemester, int endSemester) {
if (startSemester< -100 || startSemester>100 || endSemester< -100 || endSemester>100 ) {
throw new ItooRuntimeException("输入的参数不合法,参数请输入-100至100之间的数字");
}else if(startSemester>endSemester){
throw new ItooRuntimeException("输入的参数不合法,开始数值必须小于结束数值");
}
Calendar calendar = Calendar.getInstance();
LinkedHashMap<String, String> map = new LinkedHashMap<>();
//计算时间差
int timeSpan=endSemester-startSemester+1;
//生成相应年月,每个学期之间相差6个月,所以减6个月来计算.
for (int i=0;i<timeSpan;i++) {
calendar.add(Calendar.MONTH,6*startSemester);
map.putAll(getCurrentYearSemester(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH)+1));
calendar.add(Calendar.MONTH,-6*startSemester);
startSemester=startSemester+1;
}
return map;
}
/**
* 根据当前年份月份获取学年学期
* @param currentYear 当前年份
* @param currentMonth 当前月份
* @return LinkedHashMap<String,String>
*/
private static LinkedHashMap<String, String> getCurrentYearSemester(int currentYear, int currentMonth) {
String mapKey;
String mapValue;
if(currentMonth >= 1 && currentMonth <= 2) {
mapKey = currentYear - 1 + String.valueOf(currentYear) + "1";
mapValue = currentYear - 1 + "-" + currentYear + "学年第一学期";
} else if(currentMonth >= 3 && currentMonth <= 8) {
mapKey = currentYear - 1 + String.valueOf(currentYear) + "2";
mapValue = currentYear - 1 + "-" + (currentYear) + "学年第二学期";
} else {
mapKey = currentYear + String.valueOf(currentYear + 1) + "1";
mapValue = currentYear + "-" + (currentYear + 1) + "学年第一学期";
}
LinkedHashMap<String, String> map = new LinkedHashMap();
map.put(mapKey, mapValue);
return map;
}