【java】计算--考试、答题、排期相关限时场景的剩余时间

场景:一场考试安排在2023/7/12 12:00:00 —— 2023/7/14 13:00:00 ,考试时长120分钟(页面倒计时剩余时间)。

说明:代码位于实体类字段的setter()方法中,实体类字段有createTime(创建时间)、endTime(结束时间)、leftSeconds(剩余时间)、其他属性

1.开始考试时可以退出,退出时考试时长正常流逝(离开时长也算入考试时长)

 // 剩余时间
public void setLeftSeconds(String time){
        Calendar cl = Calendar.getInstance();
        //创建时间
        cl.setTime(this.getCreateTime());
        //加上考试时长
        cl.add(Calendar.MINUTE, Integer.valueOf(time));
        this.leftSeconds = (cl.getTimeInMillis() - System.currentTimeMillis()) / 1000;
    }

2.当我在2023/7/14 12:00:00第一次进入考试时,页面显示到计时应为60分钟而不是120分钟,进一步优化如下:

 // 剩余时间
public void setLeftSeconds(String time){
        Calendar cl = Calendar.getInstance();
        //创建时间
        cl.setTime(this.getCreateTime());
        cl.add(Calendar.MINUTE, Integer.valueOf(time));
        Calendar cl2 = Calendar.getInstance();
        //结束时间
        cl2.setTime(this.getEndTime());
        //创建时间+考试时长处于结束时间之后,则拿结束时间处理
        if(cl.after(cl2)){
            this.leftSeconds = (cl2.getTimeInMillis() - System.currentTimeMillis()) / 1000;
        }else{
            this.leftSeconds = (cl.getTimeInMillis() - System.currentTimeMillis()) / 1000;
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值