我正在构建需要显示5天天气预报的Web应用程序。我从https://openweathermap.org/forecast5获取数据,我的想法是使用来自api槽8数组索引的数据每天存储信息。请原谅我的英文不好,这是更好理解的屏幕截图-https://imgur.com/a/4RHjZ5g这是API示例-https://samples.openweathermap.org/data/2.5/forecast?q=M%C3%BCnchen,DE&appid=b6907d289e10d714a6e88b30761fae22
从屏幕截图中可以看到,索引0从最近3小时的循环中获取天气数据(12、15、16等)。在几乎每种情况下,我每天都会获得数据。
我无法理解每天如何获取最小值和最大值。如果今天的数据来自索引0的15:00,那么在此之前我无法获取信息。我只能在15:00和00:00之间获取温度。
第一天,我从API获得以下信息:
.list[0].dt_txt
.list[0].main.temp
.list[0].weather[0].description
第二个8,第三个16等...
答案 0 :(得分:0)
也许您可以使用API的历史版本。 也许其他选择可能是为历史值创建服务器端cookie或小型数据库。
答案 1 :(得分:0)
根据从给定API获得的响应
let weather=" assign response got from API to here";
let minArray=[];
let maxArray=[];
for (let i of weather.list)
{ minArray.push(Number( i.main.temp_min)) ;
maxArray.push(Number(i.main.temp_max)); }
console.log("min temp is "+ Math.min(...minArray));
console.log("max temp is "+ Math.max(...maxArray));
答案 2 :(得分:0)
按照之前的建议,使用history API。要获取今天+未来4天的慕尼黑值,请使用类似
的内容:const getStartAndEndDateTimestamps = increment => {
let startDate = new Date();
startDate.setDate(startDate.getDate() + increment);
startDate.setHours(0,0,0,0);
let endDate = new Date();
endDate.setDate(endDate.getDate() + increment);
endDate.setHours(23,59,59,999);
return {
start: startDate.valueOf(),
end: endDate.valueOf()
};
};
const city = 'München';
[0, 1, 2, 3, 4].forEach(increment => {
const timestamps = getStartAndEndDateTimestamps(increment);
const requestUrl = `http://history.openweathermap.org/data/2.5/history/city?q=${encodeURIComponent(city)}&type=hour&start=${timestamps.start}&end=${timestamps.end}`;
// get & process API data
});