【Java】学年学期

本文介绍了一种根据当前月份计算学年学期的方法,并提供了一个Java实现示例,该方法能够根据用户指定的范围获取多个学年的学期信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能说明

获得最近几年的学年学期
-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;
    }
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值