Everything you need to know about 9 de julho feriado
O 9 de julho feriado é um dia sancionado apenas no estado de São Paulo. Ele marca o início da Revolução Constitucionalista de 1932, quando forças civis e militares paulistas se levantaram contra o governo provisório de Getúlio Vargas, exigindo a promulgação de uma nova constituição. A guerra durou quase três meses. O movimento foi contido por tropas federais em 4 de outubro do mesmo ano. Muita gente pensa que é feriado nacional. Não é. Se você mora ou trabalha em qualquer outro estado, esse dia é um dia útil normal. Bancos, órgãos públicos estaduais e comerciais abrem sem problema algum. Só em São Paulo que o comércio e os órgãos públicos estaduais fecham. As empresas privadas têm flexibilidade para decidir, mas a maioria segue o feriado estadual como padrão.
Por que o 9 de julho feriado gera confusão todo ano
A confusão acontece porque o feriado tem alcance estadual, mas a discussão sobre ele é nacional. Jornais de todo o Brasil publicam matérias sobre os desfiles e cerimônias, o que leva pessoas de outros estados a acreditarem que o dia é feriado em lugares onde não é. Na prática, isso gera transtornos logísticos simples, mas chatos. Você agenda uma entrega ou uma reunião online com alguém em São Paulo e descobre que o parceiro não vai responder porque está de folga. O contrário também acontece: um colega de outro estado acha que você deve estar trabalhando normalmente e manda cobrança no horário comercial. Eu costumava trabalhar com integração de APIs entre sistemas de empresas distribuídas em diferentes estados. No ano de 2019, tive um problema específico com uma rotina de processamento de pagamentos que rodava automaticamente em todos os dias úteis do calendário. O sistema do cliente paulista estava configurado para bloquear transações nos feriados estaduais, mas o webhook de confirmação que eu havia mapeado no meu serviço considerava apenas feriados nacionais. Quando o 9 de julho chegou, as transações foram aceitas pelo meu lado, mas rejeitadas pelo lado deles na conferência. O resultado foi um monte de estornos desnecessários e ligações de clientes perguntando o que tinha acontecido.
A solução que eu usei foi relativamente simples, mas demorou para descobrir. Configurei uma camada de verificação de calendário que consulta tanto feriados nacionais quanto estaduais com base na unidade federativa do usuário. O serviço que resolvi usar foi a API do Calendario.io, que permite filtrar feriados por estado brasileiro. Antes disso, eu mantinha uma tabela estática com datas fixas e feriados móveis calculados manualmente, o que funcionava, mas quebrava toda vez que uma prefeitura declarava feriado municipal extraordinário. Com a API, o problema de feriados municipais esporádicos permanece, mas a cobertura estadual ficou confiável. Se você precisa lidar com isso de forma prática, aqui está o caminho mais direto. Primeiro, defina qual a jurisdição do seu sistema ou operação. Depois, escolha uma fonte de dados de feriados. Existem duas opções principais que eu testei e recomendo. A primeira é a API do Calendario.io, que cobra por requisição mas oferece cobertura completa de feriados nacionais, estaduais e municipais. A segunda é o pacote python-brasil-calendar, que é gratuito e funciona bem se você estiver no ecossistema Python. Para JavaScript, o projeto holiday-br é uma alternativa sólida, embora a manutenção seja mais lenta.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Como implementar a verificação de forma correta
O erro mais comum que eu vejo pessoas cometendo é confiar exclusivamente na função nativa de feriados do calendário do sistema operacional. O Windows e o macOS incluem listas de feriados nacionais, mas quase nunca incluem feriados estaduais brasileiros. Isso significa que, se você rodar um script usando apenas a API nativa do SO, ele vai marcar o 9 de julho como dia útil e seu processo vai disparar no horário errado. A abordagem que eu adoto agora é a seguinte. Eu mantenho uma configuração centralizada de feriados em um arquivo JSON dentro do repositório do projeto. Esse arquivo contém todas as datas fixas de feriados estaduais relevantes, incluindo 9 de julho para São Paulo, 20 de janeiro para Mato Grosso do Sul, 8 de dezembro para Aparecida e assim por diante. Para feriados móveis como Carnaval e Corpus Christi, eu uso uma função matemática que calcula a Páscoa e deriva as datas a partir dela. Isso evita dependência de APIs externas para a maioria dos casos e mantém o sistema funcionando mesmo se o serviço terceiro cair.
Eu também crio um wrapper que faz fallback para uma API externa quando necessário. Se o cálculo local falhar ou se uma data não estiver mapeada, o wrapper consulta a API do Calendario.io como verificação secundária. Isso cobre casos extraordinários como feriados municipais declarados por lei local em datas não previstas. O tempo de latência dessa dupla verificação é em torno de 200 milissegundos por chamada, o que é aceitável para agendamentos e rejeições de transações, mas inadequado para sistemas que fazem milhares de consultas por segundo. Um detalhe que pouca gente considera é o fuso horário. Feriados estaduais são definidos no horário de Brasília. Se seu servidor estiver configurado em UTC ou em outro fuso, a data pode ser interpretada como um dia antes ou depois do esperado. Eu já vi isso acontecer com um sistema hospedado na AWS em São Paulo que, por configuração incorreta de timezone nas variáveis de ambiente, estava processando agendamentos com um dia de diferença em relação ao calendário esperado. A correção foi ajustar a variável TZ para America/Sao_Paulo no container e reiniciar o serviço.
O que você precisa saber antes de depender desse feriado
Existem limitações importantes que merecem ser ditas claramente. A primeira é que a legislação brasileira permite que estados e municípios alterem datas de feriado por lei complementar. Isso significa que a lista que você montar hoje pode estar desatualizada amanhã se a assembleia legislativa de São Paulo decidir mudar algo. Eu recomendo revisar o calendário a cada trimestre, não anualmente. A segunda limitação é que o 9 de julho feriado só afeta órgãos públicos estaduais e o comércio que adota o calendário estadual. Empresas com sede em São Paulo mas com operações em outros estados geralmente fecham suas portas no estado de São Paulo e funcionam normalmente nas filiais de outros estados. Se você tem uma operação distribuída, precisa tratar cada unidade como um caso separado.
A terceira limitação, e talvez a mais importante, é que nenhuma solução automatizada é 100% confiável sem supervisão humana. Eu já vi casos em que o 9 de julho feriado foi antecipado ou transferido por decreto municipal em cidades do interior de São Paulo, e o sistema não detectou porque a fonte de dados não incluía aquelas cidades específicas. A recomendação prática é manter um responsável para validar o calendário antes de cada ciclo operacional significativo. Isso gasta cerca de 30 minutos por ano e evita horas de dor de cabeça. Se o seu cenário envolve poucos estados e transações de baixo volume, a solução mais simples e barata é manter uma planilha de feriados atualizada e revisão manual antes de cada período crítico. Para operações de alta complexidade com múltiplas jurisdições, o wrapper com fallback para API é o caminho mais seguro, apesar do custo adicional de manutenção e latência.