Todos os artigos

Diferença entre datas: por que contar dias é mais complicado do que parece

"05/03/2024" significa 5 de março no Brasil e em Portugal, mas 3 de maio nos Estados Unidos. Essa única diferença de convenção causa mais erros reais no cálculo de diferença entre datas do que anos bissextos e fusos horários juntos, porque a data "lida errado" continua parecendo perfeitamente válida.

DD/MM/AAAA contra MM/DD/AAAA

No Brasil e em Portugal o dia vem primeiro: 05/03/2024 é 5 de março. Nos Estados Unidos o mês vem primeiro — a mesma string significa 3 de maio por lá. Se uma data vinda de uma API ou planilha americana for lida com a convenção local, a diferença entre datas pode sair errada por semanas inteiras, sem nenhum erro de código aparecer.

O formato sem ambiguidade: ISO 8601

A notação 2024-03-05 (ano-mês-dia) é interpretada da mesma forma em qualquer país, por isso é o padrão em APIs, bancos de dados e logs. Quando é possível escolher o formato ao trocar datas entre sistemas, usar ISO 8601 elimina esse problema de vez.

Fusos horários e limites do dia

Se as datas incluem um horário, não apenas o dia, uma diferença de fuso horário pode deslocar a contagem em uma unidade: 23h30 em Lisboa e 20h30 em São Paulo no mesmo instante podem cair em dias de calendário diferentes, dependendo do fuso usado na contagem.

Para que serve isso

  • Calcular o número exato de dias até um prazo ou desde o início de um projeto.
  • Verificar se um contrato, aluguel ou garantia ainda está em vigor.
  • Detectar uma data lida no formato errado antes que ela estrague um relatório.

Por que "diferença em meses" não tem uma única resposta certa

Subtrair um mês de 31 de março dá um resultado ambíguo — 31 de fevereiro não existe, então alguns sistemas arredondam para 28 de fevereiro e outros transferem os dias extras para 3 de março. As duas abordagens são defensáveis, mas discordam entre si, o que vale lembrar se o resultado não bater com outra ferramenta.

Experimentar a ferramenta