原理是提取网站http应答报文中的时间信息。
(但是请不要用此方法来获取www.bjtime.cn的时间,原因见后)
1. 以下是javascript获取服务器时间的测试代码:
var xhr = null;
if(window.XMLHttpRequest){
xhr = new window.XMLHttpRequest();
}else{
xhr = new ActiveObject("Microsoft")
}
xhr.open("HEAD","http://指定网址",false); //此处为同步模式,异步模式请自己修改
xhr.send(null);
var dstr=xhr.getResponseHeader("Date");
var date=new Date(dstr);
(测试结果:受到跨域保护,blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource)
如果利用jquery:
var dstr=$.ajax({async:false}).getResponseHeader("Date");
(未测试,估计也不行)
2. 以下是java获取服务器时间的测试代码:
import java.net.*;
import java.io.*;
import java.util.*;
public class ServerTime {
public static void main(String[] args) throws Exception {
URL url=new URL("http://指定网址");
URLConnection uc=url.openConnection();
uc.connect();
long st=uc.getDate(); //获得时间戳
Date dl=new Date(st); //转换为时间对象
//输出
System.out.println(d1);;
}
}
3. 为什么不能用上述方法来获取本站(bjtime.cn)的时间?
因为太多的取时请求曾一度造成本站服务器瘫痪,所以本站特意将http response时间进行了扰乱。请大家去负载能力更强的服务器上取时间。敬请谅解。