Calcular a diferença de horas entre dois fusos horários pode ser uma tarefa complexa, especialmente ao lidar com horário de verão e regras de conversão específicas de cada região. Este método oferece uma solução precisa e confiável, utilizando a biblioteca pytz do Python, que lida automaticamente com todas as nuances de timezone.
pytz instalada (pode ser instalada via pip: pip install pytz).Comece importando as bibliotecas pytz e datetime, que são essenciais para trabalhar com fusos horários e datas no Python.
import pytz
from datetime import datetime
Defina os fusos horários de origem e destino usando a biblioteca pytz. Por exemplo, para converter entre São Paulo (America/Sao_Paulo) e Nova York (America/New_York):
timezone_origem = pytz.timezone('America/Sao_Paulo')
timezone_destino = pytz.timezone('America/New_York')
Obtenha a hora atual no fuso de origem usando a função datetime.now() e localize-a com o fuso horário definido.
hora_atual = datetime.now(timezone_origem)
Converta a hora do fuso de origem para o fuso de destino usando o método astimezone().
hora_convertida = hora_atual.astimezone(timezone_destino)
Calcule a diferença de horas entre os dois fusos horários subtraindo as horas das datas convertidas.
diferenca_horas = (hora_convertida.utcoffset() - hora_atual.utcoffset()).total_seconds() / 3600
print(f"Diferença de horas: {diferenca_horas:.2f}")
| Fuso Horário de Origem | Fuso Horário de Destino | Hora Atual (Origem) | Hora Convertida (Destino) | Diferença de Horas |
|---|---|---|---|---|
| America/Sao_Paulo | America/New_York | 2023-10-05 15:00:00 | 2023-10-05 14:00:00 | -1.00 |
| America/Sao_Paulo | Europe/London | 2023-10-05 15:00:00 | 2023-10-05 18:00:00 | +3.00 |
Com este método, você pode calcular a diferença de horas entre dois fusos horários de forma precisa e confiável, evitando erros manuais e garantindo que as conversões sejam feitas corretamente, mesmo com as complexidades do horário de verão.