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

来源:互联网 发布:淘宝退款率高会降权吗 编辑:程序博客网 时间:2024/06/05 11:56

我们在开发中,很多应用需要读取网络时间来作为一个时间的标准,对业务逻辑进行相对可靠的校验。
下面是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),所以比单独写接口效率要高。

5 1
原创粉丝点击