正在加载一言...
0%

获取网络时间实践

获取网络时间

private static void getWebsiteDatetime(final String webUrl , final HttpCallbackListener listener){
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                URL url = new URL(webUrl);// 取得资源对象
                URLConnection uc = url.openConnection();// 生成连接对象
                uc.setConnectTimeout(30000); // 连接超时
                uc.setReadTimeout(30000); // 读取超时
                uc.connect();// 发出连接
                long ld = uc.getDate();// 读取网站日期时间
                Date date = new Date(ld);// 转换为标准时间对象
                // 转换时区
                TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.CHINA);// 输出北京时间
                sdf.setTimeZone(timeZone);
                listener.onFinish(date);
            } catch (MalformedURLException e) {
                e.printStackTrace();
                listener.onError(e);
            } catch (IOException e) {
                e.printStackTrace();
                listener.onError(e);
            }
        }
    }).start();

}

// 接口

public interface HttpCallbackListener {

    void onFinish(Date response);

    void onError(Exception e);
}

使用

MainActivity.getWebsiteDatetime(dateUrl, new HttpCallbackListener() {
    @Override
    public void onFinish(final Date response) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Log.e(TAG, "onFinish: "+response );
                TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");
                // 输出北京时间
                sdf.setTimeZone(timeZone);
                dateStr = sdf.format(response);
                Log.e(TAG, "onFinish: "+dateStr);
                initDatas();
            }
        });

    }

    @Override
    public void onError(Exception e) {
        dateStr = "09:00";
        initDatas();
    }
});