1. 程式人生 > >Java js 倒計時功能 時間統一問題

Java js 倒計時功能 時間統一問題

在做訂單付款倒計時功能時,遇到了前端時間與後端時間不一致問題,測試發現,其中有三個不同的時間存在。

客戶端時間: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獲取伺服器時間。