使用Current time API检测精确时间的JAVA调用方法及代码求助
Java调用worldtimeapi获取准确时间实现方案
实现说明
- 目标接口示例:
http://worldtimeapi.org/api/timezone/Asia/Shanghai,可替换路径末尾的时区标识适配不同地区需求 - 接口返回为JSON格式,示例中使用fastjson2做解析,也可替换为jackson、gson等其他JSON解析工具
方案1:JDK 11+ 内置HttpClient实现(无第三方HTTP依赖)
依赖配置(Maven)
<dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.47</version> </dependency>
代码片段
import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import com.alibaba.fastjson2.JSONObject; public class WorldTimeApiDemo { public static void main(String[] args) throws Exception { // 以上海时区为例 String apiUrl = "http://worldtimeapi.org/api/timezone/Asia/Shanghai"; HttpClient httpClient = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(apiUrl)) .GET() .build(); HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); if (response.statusCode() == 200) { JSONObject responseJson = JSONObject.parseObject(response.body()); // 按需提取字段即可 String localDatetime = responseJson.getString("datetime"); String utcDatetime = responseJson.getString("utc_datetime"); long unixTime = responseJson.getLongValue("unixtime"); String timezone = responseJson.getString("timezone"); System.out.println("当前时区:" + timezone); System.out.println("本地时间:" + localDatetime); System.out.println("UTC时间:" + utcDatetime); System.out.println("Unix时间戳:" + unixTime); } else { System.out.println("请求失败,状态码:" + response.statusCode()); } } }
方案2:OkHttp实现(兼容JDK 8及以上版本)
依赖配置(Maven)
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.12.0</version> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.47</version> </dependency>
代码片段
import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import com.alibaba.fastjson2.JSONObject; public class WorldTimeApiOkHttpDemo { // OkHttpClient全局复用即可,无需每次请求新建实例 private static final OkHttpClient OK_HTTP_CLIENT = new OkHttpClient(); public static void main(String[] args) throws Exception { String apiUrl = "http://worldtimeapi.org/api/timezone/Asia/Shanghai"; Request request = new Request.Builder() .url(apiUrl) .get() .build(); try (Response response = OK_HTTP_CLIENT.newCall(request).execute()) { if (response.isSuccessful() && response.body() != null) { String responseBody = response.body().string(); JSONObject responseJson = JSONObject.parseObject(responseBody); // 字段提取逻辑和方案1完全一致 System.out.println("本地时间:" + responseJson.getString("datetime")); System.out.println("Unix时间戳:" + responseJson.getLongValue("unixtime")); } else { System.out.println("请求失败,状态码:" + response.code()); } } } }
注意事项
- 该接口为公共服务,有调用频率限制,请勿短时间内发起大量重复请求
- 如需获取所有支持的时区列表,可请求
http://worldtimeapi.org/api/timezone获取完整列表
内容的提问来源于stack exchange,提问作者JaloliddinPage
相关产品推荐
相关产品推荐

