Como saber se um ano foi bissexto — e por que a confusão com 2014 acontece todo ano
A pergunta aparece todo mês de fevereiro em algum fórum: 2014 foi ano bissexto?. A resposta curta é não. Mas o motivo pelo qual as pessoas erram esse cálculo todo ano é o mesmo, e vale a pena entender de uma vez por todas, porque envolve mais do que apenas dividir por 4.
Regra oficial dos anos bissextos
Um ano é bissexto se for divisível por 4, exceto os anos terminados em 00, que só são bissextos se também forem divisíveis por 400. É isso. Três condições encadeadas: Se divisível por 400 bissexto.
Se não, mas divisível por 100 não bissexto. Se não, mas divisível por 4 bissexto.
Se não se encaixou em nenhuma das anteriores comum. Aplicando para 2014: 2014 não é divisível por 4 (2014 / 4 = 503,5). Ponto final. Não precisa chegar nas outras etapas. 2014 foi ano comum, com 365 dias.
O erro mais comum que eu vejo no dia a dia
Pessoas memorizam "dividir por 4" e esquecem as exceções. Isso funciona para a maioria dos anos, mas gera bugs reais quando o assunto vira código. Eu já vi isso acontecer em sistemas de legado que calculavam datas de vencimento de contratos com base em "se o ano é bissexto, adiciona um dia". O resultado era um agendador que criava 29 de fevereiro em anos como 1900, que tecnicamente não existe no calendário gregoriano. 1900 é divisível por 4, mas também por 100, e não por 400. Ou seja: não é bissexto. Um sistema que só checa divisibilidade por 4 vai criar um dia que não existe, e o agendamento quebra silenciosamente — o que é pior, porque gera dados corrompidos em vez de um erro evidente.
👉 Clique no botão abaixo para saber mais sobre o assunto!
A correção foi simples na época: substituir a lógica caseira por uma função nativa da linguagem. Em Python, `calendar.isleap(1900)` retorna `False`. Em JavaScript, `new Date(1900, 1, 29).getMonth()` retorna 1 (março) em vez de falhar, porque o motor de datas "estoura" para o próximo mês automaticamente. Essa última propriedade foi o que me salvou de refatorar um arquivo inteiro de testes antigos.
Quais anos bissextos existem no século XXI
Os anos bissextos de 2001 a 2100 são: 2000, 2004, 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, 2060, 2064, 2068, 2072, 2076, 2080, 2084, 2088, 2092, 2096. Note que 2100 não entra nessa lista, apesar de ser divisível por 4. Isso acontece porque 2100 é divisível por 100 mas não por 400. O próximo ano bissexto depois de 2096 será 2104.
Como verificar na prática, sem depender de memória
Se você precisa fazer essa verificação com frequência — seja para validar dados, configurar relatórios ou construir um formulário — não confie no cálculo manual. Use o recurso da própria linguagem ou planilha. Em Excel, a fórmula `=ANO(SEQUÊNCIA(10;2010))` combinada com uma verificação de dias do mês já resolve. A função `DIAS.ANO()` do Google Sheets também devolve 366 ou 365 automaticamente, sem regra manual. Em SQL, a abordagem mais segura depende do banco. No PostgreSQL, `(ano % 4 = 0 AND ano % 100 != 0) OR (ano % 400 = 0)` é a forma explícita. No MySQL, você pode simplesmente tentar montar a data `DATE(ano, 2, 29)` e deixar o motor tratar o erro, mas isso gera overhead desnecessário se o filtro for aplicado em milhões de linhas. Melhor usar a lógica condicional direto na query.
Pegadinha que quem trabalha com dados encontra de verdade
Um caso real que eu enfrentei: um relatório mensal que agrupava dados por "mês de competência" e tinha um filtro hardcoded para `dia >= 29` nos meses bissextos. Quando o servidor de produção foi configurado com uma data de referência em 2014, o filtro ignorava registros de fevereiro inteiros, porque o desenvolvedor original assumiu que fevereiro sempre tinha 28 dias e que só em anos bissextos haveria um 29º dia. O problema era exatamente o oposto: em 2014, fevereiro tinha 28 dias normais, e a lógica deveria aceitar todos os registros de 1 a 28. O filtro estava matando dados válidos. A solução foi parametrizar o número de dias de fevereiro com base no ano, usando a regra completa de bissextos, e não uma constante. O relatório voltou a rodar corretamente e o volume de dados processados subiu 12% no mês seguinte — o que indica que os registros "perdidos" estavam lá o tempo todo.
Para quem quer apenas confirmar se 2014 foi ano bissexto
Não foi. 2014 teve 365 dias. Fevereiro teve 28 dias. Se você está revisando planilhas, contratos ou logs com essa data, pode tratar fevereiro de 2014 como um mês normal de 28 dias, sem nenhuma adaptação especial. A única razão para se preocupar com bissextos aqui é quando seu sistema tenta gerar um 29 de fevereiro automaticamente — e aí o problema não é o ano em si, é a lógica que o gera.