【工作笔记】关于考试系统倒计时注意事项
2018-01-26 11:00
351 查看
1.当前获取时间和页面加载获取的时间应都从服务器上获取。
服务器端时间获取如下:
Date endTime=new Date();
SimpleDateFormat
sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//转为此格式方便后面生成Date对象,调用其方法getTime()。
String
time= sdf.format(endTime);
request.getSession().setAttribute("endTime",time);//将界面加载时获取的时间用session保存。
//endTime+paperTime(考试时间)即为最终考试结束时间。
2.在jsp页面上获取服务器传的endTime
<input id="endTime" type="hidden" value="${endTime }" ></input>
3.JavaScript中获取服务器时间,倒计时制作
<script>
var
endTime = document.getElementById("endTime").value;
//endTime
此时为页面加载进来时的服务器时间,要在后面加上考试时间即为考试结束时间
var newDate = new Date(endTime);//生成Date对象 newDate,参数是endTime(已在后台fomat转了格式,直接用)
var
paperTime;
paperTime=
document.getElementById("paperTime").value;// 考试时间,单位分钟
paperTime=paperTime*60;//转为单位秒
var toHour=Math.floor(paperTime/3600); //90分钟则toHour=1
var
toMinute=Math.floor((paperTime-3600*toHour)/60);//toMinute=30
var
toSecond=Math.floor(paperTime-3600*toHour-60*toMinute) //toSecond=0
//90分钟即转为了1小时30分0秒
//加上考试时间
newDate.setHours(newDate.getHours()+toHour);
newDate.setMinutes(newDate.getMinutes()+toMinute);
newDate.setSeconds(newDate.getSeconds()+toSecond);
//【划重点】在页面上获取此时服务器时间,不是加载时的服务器时间!
var
nowTime = new Date(<%=new java.util.Date().getTime()%>);
function run() {
nowTime.setSeconds(nowTime.getSeconds() + 1);
}
setInterval("run();", 1000);
//每一秒运行一次function
run,一次加一秒。 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
function
timer()
{
var totalSecond = Math.floor((newDate.getTime()-nowTime.getTime())/1000);
//计算剩余秒数
//date.getTime()方法返回long类型的毫秒数
if(totalSecond==0){ //当剩余秒数为0时提交表单
$("#formdata").submit();
}
var remainHour=Math.floor(totalSecond/3600); //剩余小时
var remainMinute=Math.floor((totalSecond-3600*remainHour)/60);//剩余分钟
var remainSecond=Math.floor(totalSecond-3600*remainHour-60*remainMinute);//剩余秒数
$("#remainHour").text(remainHour+"小时");
$("#remainMinute").text(remainMinute+"分钟");
$("#remainSecond").text(remainSecond+"秒");
}
setInterval(timer,1000); </script>
4.页面显示
<label>剩余时间:
<span id="remainHour"></span>
<span id="remainMinute"></span>
<span id="remainSecond"></span>
</label>
服务器端时间获取如下:
Date endTime=new Date();
SimpleDateFormat
sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//转为此格式方便后面生成Date对象,调用其方法getTime()。
String
time= sdf.format(endTime);
request.getSession().setAttribute("endTime",time);//将界面加载时获取的时间用session保存。
//endTime+paperTime(考试时间)即为最终考试结束时间。
2.在jsp页面上获取服务器传的endTime
<input id="endTime" type="hidden" value="${endTime }" ></input>
3.JavaScript中获取服务器时间,倒计时制作
<script>
var
endTime = document.getElementById("endTime").value;
//endTime
此时为页面加载进来时的服务器时间,要在后面加上考试时间即为考试结束时间
var newDate = new Date(endTime);//生成Date对象 newDate,参数是endTime(已在后台fomat转了格式,直接用)
var
paperTime;
paperTime=
document.getElementById("paperTime").value;// 考试时间,单位分钟
paperTime=paperTime*60;//转为单位秒
var toHour=Math.floor(paperTime/3600); //90分钟则toHour=1
var
toMinute=Math.floor((paperTime-3600*toHour)/60);//toMinute=30
var
toSecond=Math.floor(paperTime-3600*toHour-60*toMinute) //toSecond=0
//90分钟即转为了1小时30分0秒
//加上考试时间
newDate.setHours(newDate.getHours()+toHour);
newDate.setMinutes(newDate.getMinutes()+toMinute);
newDate.setSeconds(newDate.getSeconds()+toSecond);
//【划重点】在页面上获取此时服务器时间,不是加载时的服务器时间!
var
nowTime = new Date(<%=new java.util.Date().getTime()%>);
function run() {
nowTime.setSeconds(nowTime.getSeconds() + 1);
}
setInterval("run();", 1000);
//每一秒运行一次function
run,一次加一秒。 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
function
timer()
{
var totalSecond = Math.floor((newDate.getTime()-nowTime.getTime())/1000);
//计算剩余秒数
//date.getTime()方法返回long类型的毫秒数
if(totalSecond==0){ //当剩余秒数为0时提交表单
$("#formdata").submit();
}
var remainHour=Math.floor(totalSecond/3600); //剩余小时
var remainMinute=Math.floor((totalSecond-3600*remainHour)/60);//剩余分钟
var remainSecond=Math.floor(totalSecond-3600*remainHour-60*remainMinute);//剩余秒数
$("#remainHour").text(remainHour+"小时");
$("#remainMinute").text(remainMinute+"分钟");
$("#remainSecond").text(remainSecond+"秒");
}
setInterval(timer,1000); </script>
4.页面显示
<label>剩余时间:
<span id="remainHour"></span>
<span id="remainMinute"></span>
<span id="remainSecond"></span>
</label>
相关文章推荐
- 关于程序员工作 交接的一些注意事项
- Android笔记-系统的复制粘贴功能及注意事项
- 【工作日志】--关于Vue.js中<slot>的使用方法及注意事项
- SX1276/77/78学习笔记3 - SX1278 的 FIFO 工作流程和应用注意事项
- 关于公司技术部门的管理工作的注意事项
- 【学习笔记】汇编:关于DEBUG工具使用的时候的一个注意事项
- 关于2010年度计算机信息系统集成项目管理人员继续教育考试事项的通知
- android笔记2——关于图片缓存的一些注意事项
- 关于Windows系统MySQL5.6数据库root用户密码重置的注意事项
- 【工作笔记0008】easyui中datagrid绑定到table的翻页注意事项
- 【笔记】关于android中shape使用的注意事项
- 关于双系统与NTFS格式注意事项
- 考试系统维护--网站发布注意事项
- ASP.NET学习笔记[2] - 关于使用Master.Page的几点注意事项
- 【笔记2】关于Linux 802.11n csi tool的安装注意事项
- 科目二考试注意事项笔记
- [开发时随手笔记]关于 ProgressMonitorInputStream 不弹出进度条 的 注意事项
- java多线程笔记(2)——关于synchronized关键字一些注意事项
- 关于重做系统的注意事项(仅windows系统)
- 关于C#中关于List.where中过滤条件的使用注意事项--笔记