获取网络时间(国家标准时间)
2015-11-27 23:45
609 查看
我们在开发中,很多应用需要读取网络时间来作为一个时间的标准,对业务逻辑进行相对可靠的校验。
下面是Java中(Android一样)读取网络时间的代码:
网络上很多帖子差不多都说使用 www.bjtime.cn 来获取网络时间,但是通过我的实际测试(测试时间2015-11-27 23:50),此时这个 bjtime 的时间并不准,与北京时间竟然悬殊了十几秒,显然降低了可靠性。
大家看下我测试输出的结果便一目了然,如下:
显而易见,几个知名互联网公司的时间是一致的,所以获取网络时间的时候,建议大家选用相对比较靠谱的网站,上面测试的几个已经足够备选了(百度、淘宝、国家授时中心)。
另外值得一提的是,该方法获取时间,只需要建立连接就可以了,不需要请求(request)与响应(response),所以比单独写接口效率要高。
下面是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),所以比单独写接口效率要高。
相关文章推荐
- 菜鸟学卷积神经网络基础知识(一)手写数字数据库究竟是个啥?
- 网络多线程-SDWebImage的基本使用
- 网络多线程-GCD常用函数
- 网络多线程-GCD线程间通信
- 网络多线程-GCD的基本使用(2)
- 网络多线程-GCD的基本使用
- 网络多线程-NSThread实现线程间通信
- 网络多线程-线程的安全
- 网络多线程-线程的状态
- 网络多线程-NSThread的使用
- 网络多线程-pthread的使用
- 网络多线程下载图片(SDWebImage)
- 网络多线程-下载图片(不用SDWebImage框架)
- 网络多线程-NSOperation线程间通信
- 网络多线程-NSOperation操作依赖和监听
- 网络多线程-NSOperation的常用的方法
- 网络多线程-NSOperation最大并发数
- 网络多线程-NSOperationQueue基本使用
- 网络多线程-NSOperation的简单使用
- 网络多线程 -单例模式业余练习代码MRC与ARC通用