Entendendo o fuso horário do Mato Grosso do Sul
A maior parte do estado de Mato Grosso do Sul fica no fuso UTC-4, mas tem uma particularidade que muita gente não leva a sério: o oeste do estado entra em horário de verão enquanto o leste não. Isso gera confusão em agendamentos e sistemas que tratam o estado como um bloco único.
Como funciona a hora mato grosso do sul na prática
Se você mora em Campo Grande ou Dourados, o fuso padrão é UYT (UTC-4). Se mora em Cidade Jardim ou Corumbá, também é UYT, mas durante o horário de verão essas cidades do oeste migram para UYST (UTC-3) enquanto o lesto permanece em UYT. A virada acontece no primeiro domingo de novembro e termina no primeiro domingo de fevereiro, seguindo a regra federal, mas a aplicação territorial não é uniforme. Eu já passei problemas com uma API que usava o identificador "America/Campo_Grande" no database e assumia que todo o estado seguia aquele comportamento. Quando o horário de verão entrou em vigor no oeste em 2023, minha aplicação começou a retornar horários errados para usuários de Corumbá porque o codebase tratava o estado inteiro como se fosse apenas Campo Grande. A correção foi trocar a lógica para usar os timezones específicos: "America/Campo_Grande" para a mesorregião leste e "America/Boa_Vista" — sim, Boa Vista — para as cidades ocidentais que compartilham o mesmo offset durante o VST.
👉 Clique no botão abaixo para saber mais sobre o assunto!
O detalhe técnico que pouca gente sabe é que boa parte do oeste de MS segue o mesmo horário de Roraima porque pertence à bacia do rio Madeira, que historicamente teve sincronia com aquela região. Não é um acidente geográfico, é uma decisão do governo federal baseada em coordenadas específicas. A lista exata de municípios que entram em UYST durante o VST muda de ano para ano, então depender de uma tabela fixa é armadilha.
Mapeamento correto dos fusos
Para desenvolvimento, o jeito mais seguro é não fazer suposições. Use a biblioteca tzdata do IANA e consulte o banco de dados de timezones ativo. O zoneinfo do Python, o zoneinfo do JavaScript moderno, e o TimeZoneInfo do Catualizam automaticamente quando você instala a última versão das regras do Olson. Um insight contraintuitivo: o estado não tem apenas dois fusos. Há uma faixa de transição perto de Miranda e Aquidauana onde o comportamento pode variar dependendo da versão dotzdata que você está rodando. Sempre verifique com datetime.now() num servidor real antes de assumir que sua configuração está correta.
Se você precisa de uma solução simples e não quer lidar com as complexidades de VST territorial, considere usar o UTC como base interna e fazer a conversão para o timezone local apenas na camada de apresentação. Isso elimina 90% dos bugs relacionados a horário nessa região.