Как получить отчет о погоде на определенную дату с помощью Weatherbit.io API даже при изменении часового пояса?

Я использую Weatherbit API для получения исторического отчета о погоде. Он отвечает на основе времени UTC или GMT. Но у меня другой часовой пояс.

Например

api_values_call = requests.get('https://api.weatherbit.io/v2.0/history/hourly?key=yourapikey&city=seattle,WA&start_date=2018-08-12:00&end_date=2018-08-12:24&units=I')
api_values = api_values_call.json()

Он возвращает прогноз погоды от GMT/UTC 2018-08-12:00 до 2018-08-12:23 с отметкой времени.

Если я конвертирую utctimestamp в datetime с часовым поясом ('America/Los_Angeles'), он начинается с предыдущего дня (т. е. время Los_Angels составляет GMT-7:00 часов).

Итак, я получаю отчет от 2018-08-11:17, так как GMT-7 применяется к данной метке времени. Но мне нужен отчет о погоде на весь день.

Как я могу получить отчет о погоде с 2018-08-12:00 до 2018-08-12:23, даже если часовой пояс меняется.


person Parthiban Soundram    schedule 14.08.2018    source источник
comment
Просто запросите время в соответствии со временем, которое вам нужно преобразовать во время UTC. Поэтому, если вы ищете 2018-08-01-12:00 по вашему местному времени (GMT-7:00), запросите 2018-08-01-19:00.   -  person Gozy4    schedule 14.08.2018
comment
Привет, Gozy4 .. Мое требование - получить отчет за полный день. Если я даю start_date=2018-08-11:19&end_date=2018-08-12:24, это означает, что он показывает ошибку Только 1 день на запрос, или обновите свой ключ. У меня было 200 бесплатных запросов на исторические данные.   -  person Parthiban Soundram    schedule 16.08.2018


Ответы (1)


Через заданные интервалы дат start_date=2018-08-12:07&end_date=2018-08-13:07 я получил 2018-08-12 отчет о погоде на весь день.

Вызов истории может достигать 24 часов, поэтому мы можем установить время в зависимости от вашего часового пояса.

Затем вы просто конвертируете временную метку GMT/UTC в свой часовой пояс.

Изменение дневного времени также важно, потому что иногда оно может увеличиваться или уменьшаться.

Поэтому найдите время смещения UTC и используйте его динамически.

Например:

tz = pytz.timezone('America/Los_Angeles')
dt = datetime.strptime(given_date, '%Y-%m-%d')
offset = int(tz.utcoffset(dt).total_seconds() / 3600.0)

Указанное время 2018-08-12:07 – это время utcoffset. Теперь я могу правильно получить отчет за полный день.

person Parthiban Soundram    schedule 16.08.2018