自学内容网 自学内容网

【工具类】获取日出日落时间的Java工具类

博主介绍:✌全网粉丝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 latitude
            double longitude = -74.0060; // New York City longitude

            String 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时间,并根据需要转换为本地时间。


好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 “点赞” 和 “关注” 哦,我们下次见!🎈

本文完结!

祝各位大佬和小伙伴身体健康,万事如意,发财暴富,扫下方二维码与我一起交流!!!在这里插入图片描述


原文地址:https://blog.csdn.net/weixin_44299027/article/details/145161204

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!