系統在前端須要作一個 倒計時!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