系统在前端须要作一个 倒计时!javascript
而后 将 后台传递到 前端的 时间字符串,建立 date 对象,而后 获取 毫秒数 来进行 html
计算 倒计时! 前端
但是没有注意到 date 的getTime() 的时区问题, 这样电脑设置不一样时区的地方,倒计时显示的倒计时时间就不同了。java
以前都没有注意到这个问题,还好测试发现了这个BUG。后端
虽然用户通常都是在中国时区的, 可是也是一个 隐藏BUG不是?服务器
/* * 实际服务器当时时间=页面一开始打开时的服务器时间+(当前客户端时间-一开始时打开页面是的客户端时间) * 剩余时间=结束时间-实际服务器当时时间 var order_id=${order_id};//订单ID var service_time=${service_time};//系统时间 var end_time=${end_time};//结束时间 */ var clientStartTime=new Date(); function showtime(){ var endyear=end_time.substring(0,4); var endmonth=end_time.substring(5,7); var endday=end_time.substring(8,10); var endhms=end_time.substring(11,19); //实际服务器当时时间=页面一开始打开时的服务器时间+(当前客户端时间-一开始时打开页面是的客户端时间) var sTime=service_time+(new Date().getTime()-clientStartTime.getTime()); var enddate=endyear+"/"+endmonth+"/"+endday+" "+endhms; var eTime=new Date(enddate); var sumSecond=parseInt((eTime.getTime()-sTime)/1000);/*sumSecond=sumSecond+(24*60*60);*/ //计算倒计时 var showSecond=sumSecond%60; var sumMinute=(sumSecond-showSecond)/60; var showMinute=sumMinute%60; var sumHour=(sumMinute-showMinute)/60; var showHour=sumHour%24; var showData=(sumHour-showHour)/24; if(sumSecond>-1){ $("#d").html(showData); $("#h").html(showHour); $("#m").html(showMinute); $("#s").html(showSecond); timerID=setTimeout("showtime()",1000); }else{ $("#d").html(0); $("#h").html(0); $("#m").html(0); $("#s").html(0); } } 能够看到 上面的 eTime.getTime() 这个没有设置时区,因此就出现时区的BUG。 因此要么在这里设置时区,要么经过 后端将 这个时间的 毫米数都给前端
能够参考网友的 :date和时区区别测试
因此在前端一些比较重要的功能或者操做的时候,必定要注意时区的问题.net