当前位置: 首页 > 知识库问答 >
问题:

从JSON获取明天天气的数据5天预报

高吉星
2023-03-14

你好:)我正在写一个电报机器人,显示今天和明天的天气。作为我正在使用的数据openweathermap.org.

现在,我使用了getTodaysWeather方法从JSON中获取有关Java对象的信息http://www.jsonschema2pojo.org并写道:

public class Weather {

    public static final String URL_SOURCE = "http://api.openweathermap.org/data/2.5/weather?q=";
    public static final String API_KEY = "&APPID=3ad54740fd37f3f14a3a32a09f09cd25";
    public static final String UNITS = "&units=metric";
    public static final String LANG = "&lang=ru";

    public static String getWeather(String message) throws IOException{

        URL url = new URL(URL_SOURCE + message + LANG + UNITS + API_KEY);

        InputStreamReader reader = new InputStreamReader(url.openStream());

        Scanner in = new Scanner((InputStream) url.getContent());
        String result = "";

        while (in.hasNext()) {
            result += in.nextLine();
        }

        OneDayWeather obj = null;
        Gson gson = new Gson();
        String json = result;

        obj = gson.fromJson(json, OneDayWeather.class);

        System.out.println("City " + obj.getName() + "(" + obj.getSys().getCountry()+ ")" + "today's "+ System.lineSeparator() +
                "Temperature: " + obj.getMain().getTemp() + "°C, " + System.lineSeparator()+
                "Humidity: " + obj.getMain().getHumidity() + "%, " + System.lineSeparator()+
                "Rain: " + obj.getWeather().get(0).getDescription()+ System.lineSeparator()+
                "Wind speed: " + obj.getWind().getSpeed() + " m/s";
    }
}

现在,我需要编写一个方法,从JSON数据中获取明天的天气数据http://api.openweathermap.org/data/2.5/forecast?q=London

不幸的是,我不知道如何实现这种方法。如果有人能帮助我,我会非常感激:)

共有1个答案

谢旻
2023-03-14

您可以做的是将“明天下午1:00”转换为UTC,然后转换为unix时间戳。将此值存储为tomorrow13Unix

现在对于列表中的每个预测,您将其与tomorrow13Unix进行比较,如果相同,则您已经找到了您正在寻找的内容。

请注意,API 将时间分成三个块,因此您可能希望改为查找不大于 tomorrow的最大时间13Unix

以下是我如何获得明天下午1点的大纪元时间:

long tomorrow13Unix = java.time.OffsetDateTime.now(java.time.ZoneOffset.UTC).with(java.time.LocalTime.of(13, 0)).plusDays(1).toEpochSecond();

上面的代码将获得UTC的当前时间,将该时间截断为下午1点,然后加上一天。这可能不是你想要的。您可能希望使用您的本地时间,加上一天,截断为下午1点,然后将结果时间转换为UTC,在这种情况下,您可能希望使用以下代码:

long tomorrow13Unix = java.time.LocalDateTime.now().plusDays(1).with(java.time.LocalTime.of(13, 0)).toEpochSecond(java.time.ZoneOffset.UTC);
 类似资料:
  • 21.1 注册免费API和阅读文档 本节通过一个API接口(和风天气预报)爬取天气信息,该接口为个人开发者提供了一个免费的预报数据(有次数限制)。 首先访问和风天气网,注册一个账户。注册地址:https://console.heweather.com/ 在登陆后的控制台中可以看到个人认证的key(密钥),这个key就是访问API接口的钥匙。 获取key之后阅读API文档:https://www.h

  • 更新:修改了这个问题,以更好地反映我目前的理解。 我有一个NetCDF 4.5版本的Grib2记录对象。给定一个(x,y)网格点和一个变量名,我想从对象中按预测时间提取该变量的所有预测数据(如果记录包含该变量的预测)。由于写入磁盘索引文件的默认行为,我不想使用更高级别的NetCDFFile接口。 我尝试过查看底层代码(Grib2Rectilyser,Grib2Customizer等)。)但是代码太

  • 利用json解析返回天气信息。 [Code4App.com]

  • 本文向大家介绍python获取天气接口给指定微信好友发天气预报,包括了python获取天气接口给指定微信好友发天气预报的使用技巧和注意事项,需要的朋友参考一下 先看下效果图: 用到的模块: PyMySQL requests threading wxpy 要实现上面的示例,首先是有两大块地方 获取天气信息 通过微信将天气信息发送出去 而获取天气信息又包括几个小的需要注意的地方 获取天气信息 获取天气

  • 本文向大家介绍android JSON解析数据 android解析天气预报,包括了android JSON解析数据 android解析天气预报的使用技巧和注意事项,需要的朋友参考一下 概要 笔者近期做到对天气预报JSON数据解析,在此小记。 天气预报接口:http://wthrcdn.etouch.cn/weather_mini?citykey=101200101 JSON数据如下: 最终解析效果

  • 本文向大家介绍Android天气预报之基于HttpGet对象解析天气数据的方法,包括了Android天气预报之基于HttpGet对象解析天气数据的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例所述为Android天气预报之解析天气数据的代码,可实现获取HttpGet对象读取天气网站天气数据,并从数据中解析出天气数据,比如温度、温度、风力、风向、未来几天天气趋势、当天天气状况、空气污染指数等