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

简介:

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

目录
相关文章
|
API
时间操作[取当前北京时间]免费API接口教程
该接口用于获取当前北京时间,支持时间戳等多种格式。请求方式为POST或GET,需提供用户ID、用户KEY及返回格式类型。接口免费,建议使用个人ID与KEY以独享调用频次。返回数据包含状态码和时间信息,支持多种时间格式输出。详情参见:https://www.apihz.cn/api/timeget.html
5255 4
|
数据采集 定位技术 数据安全/隐私保护
ESP8266调用NTP服务器进行时间校准
NTP服务器通常连接到具有高度精确时间源的设备,例如:GPS接收器或原子钟,以确保提供准确如一的时间。网络上的计算机可以通过连接到NTP服务器来同步其时间,并确保它们在同一时刻进行操作。
2404 0
|
Linux 开发工具 Windows
中国时间服务器,国内阿里云时间服务器
中国时间服务器,国内阿里云时间服务器很多用户使用的是国外VPS使用过程中常常遇到时间与国内不同步的情况好在阿里提供了7台NTP服务器,地址如下:阿里云提供了7个NTP时间服务器也就是Internet时间同步服务器地址 ntp1.
41933 0
|
物联网
通过微信小程序体验阿里云IoT物联网平台
通过微信小程序体验阿里云IoT物联网平台
10207 0
|
4月前
|
SQL 安全 网络安全
从漏洞到攻击链:一次看懂黑客的思维链路
从漏洞到攻击链:一次看懂黑客的思维链路
465 4
|
4月前
|
JSON API PHP
获取当前北京时间的免费API接口教程
“接口盒子”提供免费、高效的北京时间API,支持20种格式返回,适用于多种开发场景。通过简单参数即可获取时间戳或格式化时间,调用方便,稳定性高,助力开发者轻松集成精准时间功能。
1072 0
|
9月前
|
API Python
免费网络北京时间API接口
本文介绍如何通过接口盒子的免费API获取当前北京时间,支持多种格式及POST/GET请求方式。需注册账号获取ID和KEY,适用于服务器时间同步、日志记录等场景。
3469 6
|
传感器 网络协议 物联网
STM32+ESP8266+MQTT协议连接阿里云物联网平台
STM32+ESP8266+MQTT协议连接阿里云物联网平台
15951 4
STM32+ESP8266+MQTT协议连接阿里云物联网平台
|
人工智能 安全 数据中心
在泰国,阿里云第二座数据中心正式启用!
在泰国,阿里云第二座数据中心正式启用!
|
存储 前端开发 数据可视化
超详细图解说明:一个代码仓库如何管理多个项目、且代码提交互不影响。orphan分支的使用
这篇文章详细图解了如何使用Git的`--orphan`参数创建孤立分支来管理代码仓库中的多个项目,确保不同项目的代码提交互不影响,并提供了解决实际使用中可能遇到的问题的方法。
超详细图解说明:一个代码仓库如何管理多个项目、且代码提交互不影响。orphan分支的使用