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

相關文章
相關標籤/搜索