Java js 倒計時功能 時間統一問題
阿新 • • 發佈:2018-12-12
在做訂單付款倒計時功能時,遇到了前端時間與後端時間不一致問題,測試發現,其中有三個不同的時間存在。
客戶端時間:js 的 new Date(); 方法獲得的時間,這個時間可以在客戶端修改,因此不可以用在此處。
伺服器時間:專案的web伺服器的系統時間,獲取原理是使用 ajax請求,返回的頭部資訊就含有伺服器端的時間資訊。
獲取方法:
JQuery: function getServerDate(){ return new Date($.ajax({async: false}).getResponseHeader("Date")); } 原生: function getServerDate(){ var xhr = null; if(window.XMLHttpRequest){ xhr = new window.XMLHttpRequest(); }else{ // ie xhr = new ActiveObject("Microsoft") } xhr.open("GET","/",false)//false不可變 xhr.send(null); var date = xhr.getResponseHeader("Date"); return new Date(date); }
資料庫時間:通過sql語句 now() 獲取的時間。由於資料庫伺服器可能與web伺服器的不同,時間可能也會不一致。
建議解決方案:統一採用web伺服器時間,sql傳入伺服器當前時間,js採用ajax獲取伺服器時間。