Entendendo fuso horário e horário de verão na prática
A confusão entre IST e DST acontece todo dia nos fóruns de DevOps, em escalas de suporte internacional e em tickets mal documentados de deploy. Vou explicar do jeito que eu vejo isso funcionando no dia a dia. IST significa Islands Standard Time ou, mais comum, India Standard Time — UTC+5:30. Não tem horário de verão. É fixo, sem exceções. O DST, por outro lado, é Daylight Saving Time, o conceito de adiantar o relógio em uma hora durante parte do ano. DST não é um fuso horário em si, é um comportamento que se aplica sobre um fuso horário base.
diferença de ist e dst no dia a dia
O problema real é que IST é um fuso fixo enquanto DST é uma regra dinâmica que varia de país para país. Você coloca um servidor em Mumbai e ele nunca muda de horário. Coloca um em Nova York e ele pula uma hora todo março e volta em novembro. Se você não tratar isso corretamente no código, eventos agendados falham, logs ficam impossíveis de correlacionar e reports mensais dão numeração errada. Eu tive um caso específico em que um pipeline de ETL processava dados de usuários na Índia e nos EUA simultaneamente. A query de agregação diária simplesmente quebrava nas datas de transição de DST porque a conversão de timestamp para timezone local estava sendo feita com datetime.local() em vez de usar a zona horária explícita. O workaround foi padronizar todas as colunas de tempo no banco para UTC puro e fazer a conversão apenas na camada de apresentação, na API. Isso eliminou o erro e ainda reduziu a latência nas queries em cerca de 12% porque removemos funções de conversão repetidas.
👉 Clique no botão abaixo para saber mais sobre o assunto!
A regra prática que eu sigo: nunca armazene data/hora em fuso horário local no banco de dados. Guarde sempre em UTC. Converta para IST ou para o DST do usuário somente na exibição. Ferramentas como o pytz no Python ou a biblioteca Intl do JavaScript fazem isso automaticamente se você passar o identificador correto, como Asia/Kolkata para IST ou America/New_York para o DST americano. Um detalhe que pouca gente percebe: o horário de verão não começa e termina no mesmo dia em todo lugar. Nos EUA é o segundo domingo de março e o primeiro de novembro. No Brasil era o terceiro domingo de outubro até 2019, quando o horário de verão foi suspso. Em Auckland, Nova Zelândia, começa no primeiro domingo de setembro e termina no primeiro domingo de abril. Se seu sistema precisa lidar com múltiplas zonas que usam DST, você precisa consultar a base de dados tz do sistema operacional, não hardcodar datas. Uma atualização do IANA pode mudar tudo de uma vez.
A desvantagem de confiar no fuso fixo do IST é que empresas indianas com clientes globais muitas vezes acabam tendo que manter dois conjuntos de horários nas interfaces — um para o cliente interno e outro para o externo — porque o padrão UTC+5:30 não se adapta a nenhum regime de horário de verão. Já o DST, quando mal implementado, gera o famoso " horário fantasma" onde um evento é registrado duas vezes no mesmo dia calendário porque o relógio avançou e depois voltou. Se você precisa baixar alguma ferramenta de visualização de fusos horários, o conversor da Time and Date é confiável e gratuito. Para testes de código, o pacote moment-timezone (JavaScript) ou dateutil (Python) cobrem a maioria dos casos, mas leia as notas de versão antes de atualizar — a base de dados de zonas muda periodicamente e versões desatualizadas geram resultados errados em transições de DST.