一直以来,我们都希望用js获取准确的时间,也就是北京时间,当毕竟js是客户端语言,只能获取到本地的时间,而这个在我们做项目的时候往往是不准确的,我们无法保证用户的电脑时间都是准确的,所以我们一般用服务器端语言来获取服务器的时间。
虽然,服务器端语言获取时间很轻松,但是对于前端开发人员来说没有任何作用,他们需要用JS获取准确的时间,下面就介绍一种使用JS获取服务器时间的方法:
在后台程序把页面元素传递给浏览器的时候会有一个Response Header,里面有一个字段Date,标记的就是服务器响应的时间,而我们只要想办法把这个时间拿到就行了。
var xhr = new XMLHttpRequest();
if( !xhr ){
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.open("HEAD",location.href,true);
xhr.onreadystatechange=function(){
if( xhr.readyState == 4 && xhr.status == 200 ){
var str = xhr.getResponseHeader("Date"); //获取Response Header里面的Date
var date = new Date(str).getTime(); //把Date转换成时间对象
alert(date); //输出时间戳
}
}
xhr.send(null);
如果你使用JQ,可以这样
$.ajax({
url: '',
type: 'get',
success: function (data, status, xhr) {
var str = xhr.getResponseHeader('Date'); //获取Response Header里面的Date
var date = new Date(str).getTime(); //把Date转换成时间对象
alert(date); //输出时间戳
}
});
这样的方法获取的服务器时间还是比较靠谱的。
这个其实就是ajax获得了时间,还有一种办法加载页面时由php生成服务器时间,然后再由js进行转换即可。