您的位置:首页 > 理论基础 > 计算机网络

获取网络时间(国家标准时间)

2015-11-27 23:45 609 查看
我们在开发中,很多应用需要读取网络时间来作为一个时间的标准,对业务逻辑进行相对可靠的校验。

下面是Java中(Android一样)读取网络时间的代码:

package com.test;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
* 读取网络时间
*
* @author SHANHY(365384722@QQ.COM)
* @date   2015年11月27日
*/
public class GetNetworkTime {

public static void main(String[] args) {
String webUrl1 = "http://www.bjtime.cn";//bjTime
String webUrl2 = "http://www.baidu.com";//百度
String webUrl3 = "http://www.taobao.com";//淘宝
String webUrl4 = "http://www.ntsc.ac.cn";//中国科学院国家授时中心
String webUrl5 = "http://www.360.cn";//360
String webUrl6 = "http://www.beijing-time.org";//beijing-time
System.out.println(getWebsiteDatetime(webUrl1) + " [bjtime]");
System.out.println(getWebsiteDatetime(webUrl2) + " [百度]");
System.out.println(getWebsiteDatetime(webUrl3) + " [淘宝]");
System.out.println(getWebsiteDatetime(webUrl4) + " [中国科学院国家授时中心]");
System.out.println(getWebsiteDatetime(webUrl5) + " [360安全卫士]");
System.out.println(getWebsiteDatetime(webUrl6) + " [beijing-time]");
}

/**
* 获取指定网站的日期时间
*
* @param webUrl
* @return
* @author SHANHY
* @date   2015年11月27日
*/
private static String getWebsiteDatetime(String webUrl){
try {
URL url = new URL(webUrl);// 取得资源对象
URLConnection uc = url.openConnection();// 生成连接对象
uc.connect();// 发出连接
long ld = uc.getDate();// 读取网站日期时间
Date date = new Date(ld);// 转换为标准时间对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);// 输出北京时间
return sdf.format(date);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}


网络上很多帖子差不多都说使用 www.bjtime.cn 来获取网络时间,但是通过我的实际测试(测试时间2015-11-27 23:50),此时这个 bjtime 的时间并不准,与北京时间竟然悬殊了十几秒,显然降低了可靠性。

大家看下我测试输出的结果便一目了然,如下:

2015-11-27 23:51:37 [bjtime]
2015-11-27 23:50:22 [百度]
2015-11-27 23:50:22 [淘宝]
2015-11-27 23:50:22 [中国科学院国家授时中心]
2015-11-27 23:50:22 [360安全卫士]
2015-11-27 23:50:22 [beijing-time]


显而易见,几个知名互联网公司的时间是一致的,所以获取网络时间的时候,建议大家选用相对比较靠谱的网站,上面测试的几个已经足够备选了(百度、淘宝、国家授时中心)。

另外值得一提的是,该方法获取时间,只需要建立连接就可以了,不需要请求(request)与响应(response),所以比单独写接口效率要高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: