GeradoresOnline
Matemática

Subtrair Dias de uma Data

Subtraia uma quantidade de dias de uma data e veja o resultado.

Documentação técnica

Subtrair Dias de uma Data: o caso onde "voltar um mês" e "voltar 30 dias" divergem

Subtrair dias usa a mesma técnica já documentada na página de Somar Dias deste site (data.setDate(data.getDate() - dias)), mas vale destacar especificamente o caso de borda que a subtração expõe com mais frequência que a soma: a confusão entre "voltar N dias" e "voltar N meses" — são operações matematicamente diferentes que só coincidem por acaso em meses de exatamente 30 dias. Subtrair 30 dias de 15 de março não devolve 15 de fevereiro (fevereiro tem só 28 ou 29 dias) — devolve 13 de fevereiro (ou 14, em ano bissexto), porque a operação conta dias individuais, não "volta um mês inteiro" como unidade.

Por que voltar através de fevereiro é o caso de teste mais revelador

Testar subtração de dias especificamente atravessando fevereiro (e especialmente entre um ano bissexto e um não-bissexto) é o caso que mais expõe implementações incorretas — subtrair 1 dia de 1º de março deveria retornar 29 de fevereiro em ano bissexto, mas 28 de fevereiro em ano comum, um comportamento que só uma implementação que realmente consulta a regra de ano bissexto (não uma tabela fixa "fevereiro tem 28 dias") consegue acertar em ambos os casos. Como setDate() delega essa lógica ao próprio objeto Date do JavaScript, essa distinção é tratada corretamente sem código adicional específico para esse caso de borda.

Uso prático: contar prazo retroativo e período de carência

Subtrair dias de uma data aparece em cálculos como determinar a data limite retroativa de um período de carência (por exemplo, "documentos dos últimos 90 dias"), calcular a data de início de um período de apuração contábil ou fiscal que termina numa data conhecida, ou verificar se uma data de nascimento cai dentro de uma janela de elegibilidade contada retroativamente a partir de hoje — em todos esses casos, contar dias individuais corretamente (não aproximar por "meses de 30 dias") é o que garante que o resultado bata exatamente com o prazo legal ou contratual real, sem margem de erro de um ou dois dias que uma aproximação grosseira introduziria.

Gostou das ferramentas? Ajude a manter o site no ar: apoiar via Pix · Sobre · Contato · Política de Privacidade