用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:找不到页面

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线