0Pricing
Python Academy · Aula

Fusos horários com zoneinfo

Trabalhe com objetos datetime conscientes do fuso horário

Fusos horários com zoneinfo é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.

Datas e horas sem fuso e com fuso

Uma data e hora sem fuso horário não contém informações de fuso — ela apenas diz '14h', sem indicar qual 14h. Uma data e hora com fuso horário contém um fuso horário, então identifica um momento exato em todo o mundo.

Datas e horas com fuso evitam erros quando os usuários estão em diferentes regiões.

from datetime import datetime
naive = datetime(2026, 5, 30, 14, 0)
print(naive.tzinfo)

Importando informações de fuso horário

O Python 3.9 ou posterior inclui zoneinfo na biblioteca padrão. Importe ZoneInfo e passe um nome de fuso horário IANA, como 'Europe/Istanbul' ou 'America/New_York'.

from zoneinfo import ZoneInfo
tz = ZoneInfo('Europe/Istanbul')
print(tz)

Criando uma data e hora com fuso

Passe tzinfo=ZoneInfo(...) ao construir uma data e hora para torná-la ciente do fuso. Agora ela sabe exatamente a qual região pertence.

from datetime import datetime
from zoneinfo import ZoneInfo
d = datetime(2026, 5, 30, 14, 0, tzinfo=ZoneInfo('Europe/Istanbul'))
print(d)
print(d.tzinfo)

UTC como referência

UTC é a referência universal. Use datetime.now(ZoneInfo('UTC')) para obter a hora UTC atual com fuso. Armazenar horários em UTC é uma prática recomendada.

from datetime import datetime
from zoneinfo import ZoneInfo
utc_now = datetime(2026, 5, 30, 11, 0, tzinfo=ZoneInfo('UTC'))
print(utc_now)

Convertendo entre fusos horários

.astimezone(tz) converte uma data e hora com fuso para outro fuso horário, ajustando o relógio para que ela continue representando o mesmo instante.

from datetime import datetime
from zoneinfo import ZoneInfo
utc = datetime(2026, 5, 30, 11, 0, tzinfo=ZoneInfo('UTC'))
ist = utc.astimezone(ZoneInfo('Europe/Istanbul'))
print('UTC:', utc)
print('Istanbul:', ist)

Mesmo instante, relógios diferentes

Após a conversão, os números do relógio diferem, mas o instante subjacente é idêntico. Comparar duas datas e horas com fuso compara os momentos reais, não os algarismos exibidos.

from datetime import datetime
from zoneinfo import ZoneInfo
utc = datetime(2026, 5, 30, 11, 0, tzinfo=ZoneInfo('UTC'))
ny = utc.astimezone(ZoneInfo('America/New_York'))
print(utc == ny)

Lendo o deslocamento em relação a UTC

O método .utcoffset() retorna uma timedelta que mostra a diferença entre o fuso e UTC naquele momento — incluindo qualquer ajuste de horário de verão.

from datetime import datetime
from zoneinfo import ZoneInfo
d = datetime(2026, 5, 30, 14, 0, tzinfo=ZoneInfo('Europe/Istanbul'))
print('Offset:', d.utcoffset())

O horário de verão é tratado automaticamente

zoneinfo usa o banco de dados de fusos horários do sistema, então sabe quando o horário de verão começa e termina. O mesmo fuso pode ter deslocamentos diferentes ao longo do ano.

from datetime import datetime
from zoneinfo import ZoneInfo
winter = datetime(2026, 1, 15, 12, 0, tzinfo=ZoneInfo('America/New_York'))
summer = datetime(2026, 7, 15, 12, 0, tzinfo=ZoneInfo('America/New_York'))
print('Winter:', winter.utcoffset())
print('Summer:', summer.utcoffset())

Associando um fuso a uma hora sem fuso

Se uma data e hora sem fuso representar um horário local conhecido, associe um fuso usando .replace(tzinfo=...). Isso a identifica sem alterar o relógio.

from datetime import datetime
from zoneinfo import ZoneInfo
naive = datetime(2026, 5, 30, 9, 0)
aware = naive.replace(tzinfo=ZoneInfo('Europe/Istanbul'))
print(aware)

Evite misturar datas e horas com e sem fuso

Você não pode subtrair nem comparar uma data e hora sem fuso com uma que tenha fuso — o Python gera um TypeError. Mantenha suas datas e horas consistentes em todo o programa.

from datetime import datetime
from zoneinfo import ZoneInfo
naive = datetime(2026, 5, 30, 9, 0)
aware = datetime(2026, 5, 30, 9, 0, tzinfo=ZoneInfo('UTC'))
try:
    print(aware - naive)
except TypeError as e:
    print('Error:', e)

Formatando com o fuso

O código %Z exibe o nome do fuso horário, e %z exibe o deslocamento numérico ao formatar uma data e hora com fuso.

from datetime import datetime
from zoneinfo import ZoneInfo
d = datetime(2026, 5, 30, 14, 0, tzinfo=ZoneInfo('Europe/Istanbul'))
print(d.strftime('%Y-%m-%d %H:%M %Z %z'))

Verificação rápida

Qual é a principal diferença entre uma data e hora sem fuso e uma com fuso?

Recapitulação: fusos horários

Resumo:

  • Datas e horas sem fuso não têm informações de fuso; as que têm fuso carregam tzinfo.
  • Use ZoneInfo('Region/City') do módulo zoneinfo.
  • .astimezone() converte uma data e hora com fuso para outro fuso.
  • zoneinfo lida automaticamente com o horário de verão, e você nunca deve misturar datas e horas sem fuso com as que têm fuso.
from datetime import datetime
from zoneinfo import ZoneInfo
utc = datetime(2026, 5, 30, 12, 0, tzinfo=ZoneInfo('UTC'))
print(utc.astimezone(ZoneInfo('Europe/Istanbul')))

Perguntas Frequentes

A aula “Fusos horários com zoneinfo” é grátis?

Sim — o texto completo de “Fusos horários com zoneinfo” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.

O que vou aprender em “Fusos horários com zoneinfo”?

Trabalhe com objetos datetime conscientes do fuso horário Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Python Academy?

Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Fusos horários com zoneinfo”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Python Academy?

Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. date, time, datetime
  2. Timedelta e operações aritméticas
  3. Formatação e análise
  4. Fusos horários com zoneinfo
← Voltar para Python Academy