如何从 5 天天气预报 JS 中获取当天的最低和最高温度?
How to get min and max temp for the day, from 5 day weather forecast JS?
我正在构建需要显示 5 天天气预报的 Web 应用程序。我从 https://openweathermap.org/forecast5 My idea is to put information for each day using data from api trough 8 indexes of array. Exuse my bad English, here is screenshot for better understanding - https://imgur.com/a/4RHjZ5g Here is the API example - 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 等等...
也许您可以使用 API 的历史版本。
也许其他选择可以是为历史值创建服务器端 cookie 或小型数据库。
根据给定的回复 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));
如前所述,使用 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
});
我正在构建需要显示 5 天天气预报的 Web 应用程序。我从 https://openweathermap.org/forecast5 My idea is to put information for each day using data from api trough 8 indexes of array. Exuse my bad English, here is screenshot for better understanding - https://imgur.com/a/4RHjZ5g Here is the API example - 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 等等...
也许您可以使用 API 的历史版本。 也许其他选择可以是为历史值创建服务器端 cookie 或小型数据库。
根据给定的回复 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));
如前所述,使用 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
});