博主介绍:✌全网粉丝22W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌
技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。
感兴趣的可以先关注收藏起来,在工作中、生活上等遇到相关问题都可以给我留言咨询,希望帮助更多的人。
获取日出日落时间的Java工具类
为了获取日出和日落时间,你可以使用Java编写一个工具类,这个工具类可以调用一个提供日出日落时间的API。例如,你可以使用Sunrise-Sunset API,这是一个免费的、开源的API,可以返回给定地理位置的日出和日落时间。
以下是一个简单的Java工具类示例,它使用HTTP请求从Sunrise-Sunset API获取日出和日落时间:首先,确保你已经添加了HTTP客户端库到你的项目中。如果你使用的是Maven,你可以在pom.xml中添加以下依赖:
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version>
</dependency>
创建一个工具类 SunriseSunsetUtil
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;public class SunriseSunsetUtil {private static final String API_URL = "https://api.sunrise-sunset.org/json?lat=%s&lng=%s&formatted=0";public static String getSunriseSunset(double latitude, double longitude) throws IOException, ParseException {String url = String.format(API_URL, URLEncoder.encode(String.valueOf(latitude), StandardCharsets.UTF_8), URLEncoder.encode(String.valueOf(longitude), StandardCharsets.UTF_8));try (CloseableHttpClient httpClient = HttpClients.createDefault()) {HttpGet request = new HttpGet(url);HttpResponse response = httpClient.execute(request);int statusCode = response.getStatusLine().getStatusCode();if (statusCode == 200) {HttpEntity entity = response.getEntity();String jsonResponse = EntityUtils.toString(entity, StandardCharsets.UTF_8);JSONObject jsonObject = new JSONObject(jsonResponse);String status = jsonObject.getString("status");if ("OK".equals(status)) {String sunrise = jsonObject.getString("results").getString("sunrise");String sunset = jsonObject.getString("results").getString("sunset");SimpleDateFormat sdfInput = new SimpleDateFormat("HH:mm:ss", Locale.ENGLISH);SimpleDateFormat sdfOutput = new SimpleDateFormat("HH:mm", Locale.ENGLISH);Date sunriseDate = sdfInput.parse(sunrise);Date sunsetDate = sdfInput.parse(sunset);return String.format("Sunrise: %s, Sunset: %s", sdfOutput.format(sunriseDate), sdfOutput.format(sunsetDate));} else {throw new IOException("API error: " + jsonObject.getString("message"));}} else {throw new IOException("Failed to fetch data: HTTP error code " + statusCode);}}}public static void main(String[] args) {try {// Example usage:double latitude = 40.7128; // New York City latitudedouble longitude = -74.0060; // New York City longitudeString sunriseSunset = getSunriseSunset(latitude, longitude);System.out.println(sunriseSunset);} catch (IOException | ParseException e) {e.printStackTrace();}}
}
说明:
API URL:API_URL 是Sunrise-Sunset API的URL,包含纬度和经度的占位符。
HTTP 请求:使用Apache HttpClient库发送HTTP GET请求到API。
JSON 解析:使用org.json库解析返回的JSON响应。
日期格式化:将返回的HH:mm:ss格式的日期时间转换为HH:mm格式。
错误处理:处理HTTP错误和API错误。
依赖:
Apache HttpClient库(用于HTTP请求)。
org.json库(用于JSON解析)。
注意:
确保你的项目能够访问外部网络。
根据你的项目配置,可能需要添加更多的错误处理和日志记录。
你可能还需要考虑时区问题,这里假设服务器返回的时间是UTC时间,并根据需要转换为本地时间。
好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 “点赞” 和 “关注” 哦,我们下次见!🎈
本文完结!
祝各位大佬和小伙伴身体健康,万事如意,发财暴富,扫下方二维码与我一起交流!!!