用js做时间校正,获取本机时间,是存在bug的
优采云 发布时间: 2021-08-09 20:11用js做时间校正,获取本机时间,是存在bug的
使用js进行时间校正获取当地时间存在一个bug。
服务器时间也可以通过js获取。原理是使用ajax请求,返回的头信息中收录服务器端的时间信息,拿到就够了。下面:
1、依赖于 jQuery
代码:
function getServerDate(){
return new Date($.ajax({async: false}).getResponseHeader("Date"));
}
上述函数返回一个Date对象。注意使用ajax时一定要同步,否则不能返回时间日期。
无需填写请求链接;
如果服务器时间和本地时间有时差,需要更正。
2、原
代码:
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);
}
返回的是Date对象,xhr.open()必须使用同步;
无需填写请求链接; open、send 和 getResponseHeader 必须按顺序写入。
如果需要使用异步请求,可以监控onreadystatechange状态做不同的操作。
function getServerDate(){
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(){
var time,date;
if(xhr.readyState == 2){
time = xhr.getResponseHeader("Date");
date = new Date(time);
console.log(date);
}
}
}
使用异步返回时间不是很方便。
这里的readyState有四种状态,方便不同的处理:
失败状态,状态值:
200:“好的”
404:找不到页面