代码之家  ›  专栏  ›  技术社区  ›  Samson

如果客户端时间不等于服务器时间,如何确定条件?(假设2小时误差)

  •  0
  • Samson  · 技术社区  · 8 年前

    我只是使用xml http请求来获取服务器的当前时间。

    代码如下:

    var xmlHttp;
    function srvTime(){
        try {
            //FF, Opera, Safari, Chrome
            xmlHttp = new XMLHttpRequest();
        }
        catch (err1) {
            //IE
            try {
                xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
            }
            catch (err2) {
                try {
                    xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
                }
                catch (eerr3) {
                    //AJAX not supported, use CPU time.
                    alert("AJAX not supported");
                }
            }
        }
        xmlHttp.open('HEAD',window.location.href.toString(),false);
        xmlHttp.setRequestHeader("Content-Type", "text/html");
        xmlHttp.send('');
        return xmlHttp.getResponseHeader("Date");
    }
    
    var st = srvTime();
    var date = new Date(st);
    var localTime = new Date();
    document.write("Local machine time is: " + localTime + "<br>");
    document.write("Server time is: " + date);
    

    我列出了两次,第一次是客户端本地时间,第二次是服务器时间。

    时间模式如下(工作日-月-日期-年HH:MM:SS时区(区域)):

    当地机器时间为:2017年11月22日星期三15:44:00 GMT+0800(HKT)

    服务器时间为:2017年11月22日星期三14:44:02 GMT+0800(HKT)

    我需要做一个if条件,即客户端的本地时间与服务器时间不匹配,假设客户端的本地时间与服务器时间的误差超过2小时,它将弹出一个 alert("your time is not match!"); .

    1 回复  |  直到 8 年前
        1
  •  0
  •   Samson    8 年前

    这是我的答案,js代码:

    var calcTimeError = (localTime.getTime() - date.getTime());
    if(calcTimeError < -7200000 || calcTimeError > 7200000){
        //do something here (7200000 = 2 hours: 1000ms * 60 * 60 * 2)
        alert("your time is not match!");
    }