У меня есть тег XML со следующими данными из API открытой погоды для восхода и захода солнца в Мельбурне:

<sun rise="2020-11-13T19:00:49" set="2020-11-14T09:08:32"/>

Что неверно, поскольку солнце не может встать в 19:00. Я предполагаю, что это потому, что это время в формате UTC, а API просто выполняет какое-то странное преобразование.

Я просто хочу исправить время восхода и захода солнца, чтобы показывать правильное время.

Это мой код:

 xml.find("sun").each( function(){

                        var riseTime = new Date( $(this).attr("rise"));

                        var setTime = new Date( $(this).attr("set"));

                        strSunRise += riseTime.toLocaleTimeString('en-AU')+ "<br />";
                        strSunSet += setTime.toLocaleTimeString('en-AU')+ "<br />";

                        document.getElementById("sunRise").innerHTML = strSunRise;
                        document.getElementById("sunSet").innerHTML = strSunSet;
                    });

0
Nicolas Poletti 14 Ноя 2020 в 17:01

1 ответ

Лучший ответ

Похоже, что у openweathermap API также есть тег часового пояса - секунды как смещение от UTC. Может, как-то так работает?

xml.find("city").each((i, city) => {
    let sun = city.find("sun");
    let timeZoneSeconds = +city.find("timezone").text();
    let riseTime = new Date(new Date(sun.attr("rise")) + timeZoneSeconds);
    let setTime = new Date(new Date(sun.attr("set")) + timeZoneSeconds);
    // riseTime and setTime are now in local time
});
0
Kilves 14 Ноя 2020 в 14:24