js date 获取毫秒数,注意时区的区别!

系统在前端须要作一个 倒计时!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

相关文章
相关标签/搜索