场景:一场考试安排在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;
}
}
文章讲述了如何在Java中实现考试倒计时功能,包括设置考试开始和结束时间,以及在不同情况下的剩余时间计算,特别提到当用户首次进入考试时的优化处理。

794

被折叠的 条评论
为什么被折叠?



