js 获取服务器时间

安稳与你 提交于 2019-11-26 19:23:29

js 是客户端执行的,所以,js的一切关于时间的函数,如 Date.now() 都是以客户端为准的。

但是如果客户端的时间跟网络时间不一致,对有些对时间依赖度较高的项目来说,可能就是致命性的问题,这种情况下,就不能简单的使用客户端的时间,而是要获取服务器时间以保证项目的正常运行。接下来说下 js 如何获取服务器时间。

原理:使用 ajax请求,返回的头部信息就含有服务器端的时间信息,获取到就可以了,如图:

实现:

// 同步获取
function getServerDate(){
	var xhr = null;
    if(window.XMLHttpRequest){
        xhr = new window.XMLHttpRequest();
    }
    else{ // ie
        xhr = new ActiveObject("Microsoft")
    }
    xhr.open("GET","/",false);
    xhr.send(null);
    var date = xhr.getResponseHeader("Date");
    console.log(date);
    var timestamp = parseInt(new Date(date).getTime()/1000);
    console.log(timestamp)
    return timestamp;
}

// 异步获取
function getServerDateAsync(){
    var xhr = null;
    if(window.XMLHttpRequest){
      xhr = new window.XMLHttpRequest();
    }
    else{ // ie
      xhr = new ActiveObject("Microsoft")
    }
    xhr.open("GET","/",true);
    xhr.send(null);
    xhr.onreadystatechange=function(){
        if(xhr.readyState == 2){
            var time = xhr.getResponseHeader("Date");
            var date = new Date(time);
            console.log(date);
        }
    }
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!