O que realmente define um ano bissexto e por que todo mundo erra na hora de calcular
A regra básica todo mundo sabe: divide por 4 e pronto. O problema é que essa explicação é incompleta e quem tenta aplicar só ela acaba com problemas em anos como 1900 ou 2100, que são divisíveis por 4 mas não são bissextos. A regra completa do calendário gregoriano envolve três camadas. Primeiro, o ano tem que ser divisível por 4. Segundo, se for divisível por 100, deixa de ser bissexto. Terceiro, se for divisível por 400, volta a ser bissexto mesmo assim. Soa complicado de mais para algo que deveria ser simples, mas é exatamente essa complicação que causa bug em sistemas por aí. Já fiquei horas rastreando um erro em um sistema de agendamento onde o programador tinha usado apenas a divisão por 4. O problema apareceu porque a aplicação estava calculando intervalos de datas que atravessavam o ano 2100. Como 2100 não é bissexto (é divisível por 100 mas não por 400), o sistema estava gerando uma data incorreta de 29 de fevereiro e quebrando relatórios inteiros de planejamento financeiro. A correção foi adicionar a verificação completa das três regras. Aprendi isso na prática porque já vi isso acontecer de novo em projetos diferentes.
Quando é o próximo ano bissexto: resposta direta e como verificar
O próximo ano bissexto é 2028. A sequência atual é 2024, depois 2028, depois 2032. Se você quiser calcular manualmente, basta pegar o ano atual, somar 4 e verificar se o resultado não cai nas exceções de século. Os próximos anos bissextos normais são 2028, 2032, 2036, 2040, 2044, 2048 e 2052. Depois vem 2056, 2060, 2064, 2068, 2072, 2076, 2080, 2084, 2088, 2092, 2096. Aí tem o buraco: 2100 não é bissexto. O próximo depois dele só em 2104. Para quem precisa disso com frequência, existem bibliotecas que já implementam essas regras corretamente. No Python, o módulo calendar é direto: calendar.isleap(2028) retorna True. No JavaScript, não há uma função nativa simples, então muita gente usa uma biblioteca como moment.js ou a API nativa Date, embora a verificação manual com as três regras seja rápida de escrever e leve. Em sistemas que processam grandes volumes de datas, eu recomendo usar as bibliotecas existentes em vez de implementar a lógica manualmente, porque edge cases como o 2100 aparecem mais do que parece.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Uma coisa que poucos sabem: a razão pela qual o calendário gregoriano existe é porque o ano tropical (o tempo real que a Terra leva para dar uma volta ao redor do Sol) tem aproximadamente 365,24219 dias, não 365,25. A diferença de cerca de 11 minutos por ano seria suficiente para deslocar as estações lentamente ao longo dos séculos se não ajustássemos. Por isso a regra dos 400 anos existe — ela ajusta o erro acumulado da regra dos 100 anos. Sem ela, o calendário ganharía um dia a cada cerca de 3.300 anos em relação às estações reais. O principal inconveniente dessas regras é que elas são contra-intuitivas para quem não estuda ciência da computação ou astronomia. Programadores juniores frequentemente esquecem a exceção dos séculos e criam bugs que só aparecem em produção anos depois. Outra limitação é que qualquer fórmula ou função só funciona corretamente no calendário gregoriano, que foi adotado de forma gradual a partir de 1582. Se você estiver lidando com datas históricas anteriores a essa adoção, como eventos do século XV ou XVI, o conceito de ano bissexto passa a ser ambíguo porque o calendário juliano tinha regras diferentes, e muitos países adotaram o gregoriano em épocas diferentes. Isso é especialmente problemático em sistemas que precisam calcular intervalos entre datas históricas em bases de dados globais.
Se o seu projeto lida com datas internacionais e históricas, considere usar bibliotecas como pytz no Python ou a zona horária integrada do Java, que já tratam dessas transições de calendário. Para uso cotidiano, a resposta curta é mesmo 2028.