ToolActToolAct

Calculadora de Soma/Subtração de Datas

Adiciona ou subtrai dias, semanas, meses, anos de uma data

Adicionar ou subtrair dias de uma data

O que é uma Calculadora de Soma/Subtração de Datas?

Uma calculadora de soma ou subtração de datas encontra uma data-alvo movendo uma data inicial para frente ou para trás por dias, semanas, meses ou anos. Ela ajuda em renovações, retornos, prazos contratuais, garantias, lembretes e planejamento de projetos sem contar tudo manualmente no calendário. A parte mais delicada não é somar dias, mas lidar com os limites reais do calendário: meses têm tamanhos diferentes, anos bissextos alteram fevereiro e uma data como 31 de janeiro nem sempre existe no mês seguinte. A ferramenta fornece um resultado prático para planejamento rápido. Ela conta tempo de calendário, não dias úteis, feriados, regras regionais ou prazos legais específicos.

Como usar

Como usar

  1. Insira a data de início
  2. Selecione adicionar (para frente) ou subtrair (para trás)
  3. Insira o valor e selecione uma unidade (day/week/month/year)
  4. Clique em 'Calculate result' para ver a data resultante

Regras de data

  • Cálculos de meses e anos podem cair em meses mais curtos; verifique como sua regra de negócio lida com datas como 31 de janeiro mais um mês.
  • Para prazos, confirme se fins de semana, feriados ou cortes de fim de dia devem alterar a data final.

Casos de uso

Calcular um prazo a partir de uma data inicial conhecidaEscolha uma data inicial, selecione adicionar ou subtraia e aplique dias, semanas, meses ou anos para produzir uma única data resultante para garantias, renovações, retornos ou estimativas de entrega. Como o transbordo de fim de mês é tratado pelo utilitário de datas do navegador, casos extremos como 31 de janeiro mais um mês se resolvem para 28 ou 29 de fevereiro sem nenhuma consulta de calendário no servidor.
Usar deslocamentos rápidos para janelas comuns de planejamentoApós um resultado aparecer, os atalhos +7, +30, +90 dias e +1, +3 meses, +1 ano tornam rápido comparar períodos comuns de revisão sem redigitar valores. A data inicial e o deslocamento escolhido permanecem dentro da página; nenhuma requisição é enviada ao backend, então aniversários, períodos de experiência, pedidos de visto ou datas de retorno médico podem ser calculados em um dispositivo compartilhado ou emprestado sem expor a entrada subjacente.
Lembrar que aritmética de calendário não é regra de dias úteisA ferramenta trabalha com datas de calendário e transbordos de mês/ano através do utilitário de datas. Ela não leva em conta feriados, fins de semana, calendários corporativos ou regras de prazo específicas de jurisdição. Registre a data inicial, o deslocamento e a data resultante juntos para que o cálculo possa ser compreendido posteriormente.
Reverificar transbordos de fim de mês como 31 de janeiro mais um mêsQuando o dia inicial excede a duração do mês de destino, confirme como a calculadora trata o transbordo para que renovações de assinatura e aniversários de contrato não mudem silenciosamente para uma data diferente. Teste casos extremos como 31 de janeiro mais um mês contra a duração real de fevereiro, ou 31 de março menos um mês contra um fevereiro de 31 dias em ano bissexto, antes de usar o resultado em um sistema de cobrança ou RH.
Combinar o resultado com um fuso horário para equipes distribuídasRegistre a data de referência junto com um fuso horário explícito ou offset UTC, pois um prazo armazenado sem contexto pode ficar um dia errado quando revisores em outras regiões o reinterpretam. Por exemplo, uma data de término de contrato expressa como '2026-07-15' pode significar instantes muito diferentes para uma equipe em Tóquio e outra em Los Angeles, então armazenar o offset junto com a data evita a mudança silenciosa de dia que frequentemente acontece durante entregas entre regiões.

Princípio técnico

A aritmética de datas nesta ferramenta é construída sobre o calendário gregoriano proléptico conforme implementado pelo objeto Date do ECMAScript. Os meses em JavaScript são indexados a partir de zero (janeiro é 0, dezembro é 11), o que é a maior fonte de erros de deslocamento em código de datas. Adicionar dias é simples: new Date(d.getTime() + n * 86_400_000). Adicionar meses é mais difícil porque os meses têm 28, 29, 30 ou 31 dias: o padrão date.setMonth(date.getMonth() + n) transborda quando o mês resultante é mais curto que o dia de origem, então 31 de janeiro + 1 mês produz 3 de março em vez de 28 de fevereiro (o motor carrega os 3 dias extras para março). Esta ferramenta detecta o transbordo comparando date.getMonth() após setMonth e limita o dia ao último dia do mês de destino quando necessário, seguindo o comportamento de moment.js, date-fns e Plain Date.add() do Temporal. Os anos bissextos seguem a regra gregoriana padrão: um ano é bissexto se divisível por 4, exceto os séculos, que devem ser divisíveis por 400. Então 1900 e 2100 são anos comuns, enquanto 2000 foi bissexto e 2024 também. Isso é relevante sempre que um cálculo atravessa 29 de fevereiro: 29 de janeiro + 1 mês + 1 mês em 2023 dá 29 de março, mas em 2024 o transbordo atinge 29 de fevereiro (uma data válida) e depois 29 de março, sem necessidade de limitação. O corte de 1582 para a transição juliana-gregoriana é ignorado aqui porque o calendário gregoriano proléptico estende as regras indefinidamente para o passado; datas anteriores a 15 de outubro de 1582 são tecnicamente anacrônicas, mas ainda calculam corretamente para fins modernos. O tratamento de fuso horário é uma dimensão separada: o Date armazena um instante UTC internamente e aplica o fuso horário IANA do sistema (ex.: America/New_York, Asia/Shanghai) apenas ao chamar .getDate(), .getMonth() ou .toLocaleString(). Seguem-se dois problemas: (1) uma data construída a partir de uma string ISO sem sufixo Z ("2026-06-10") é interpretada como meia-noite UTC, mas "2026-06-10T00:00:00" sem o Z é interpretada como meia-noite horário local, e a mesma date.getDate() pode retornar 9 ou 10 dependendo do offset do usuário; (2) as transições de horário de verão na primavera (pulam 02:00-03:00) e no outono (repetem 01:00-02:00) tornam alguma aritmética ambígua, então uma adição de "+24 horas" pode cair em um relógio de parede que está 23 ou 25 horas adiante. Para aritmética de dias úteis, dias da semana ou com feriados, o resultado do calendário deve ser pós-processado contra uma lista de feriados específica da região (ex.: através do pacote npm date-holidays ou um calendário personalizado) em vez de depender do transbordo simples.

  • Os meses do JS Date são indexados a partir de zero: Janeiro = 0, Dezembro = 11; o erro de deslocamento é o mais comum.
  • Transbordo de setMonth: 31 de jan + 1 mês dá 3 de mar, não 28 de fev; a ferramenta limita ao fim do mês comparando getMonth() após setMonth.
  • Ano bissexto: divisível por 4, exceto anos de século que devem ser divisíveis por 400 (então 1900 não, 2000 sim, 2024 sim).
  • ISO 8601 sem Z ("2026-06-10T00:00:00") interpreta como horário local; com Z é UTC — getDate() pode retornar dias diferentes.
  • Transições de horário de verão criam dias de 23 e 25 horas; a adição de +24 nem sempre equivale a +1 dia de calendário.
  • Cálculo em nível de dias é exato via getTime() + n * 86_400_000; unidades maiores cascateiam por setMonth/setFullYear com limitação.
  • Aritmética de dias úteis e com feriados deve ser adicionada por cima via tabela de calendário específica da região — não está no motor.

Exemplos

Adicionar 90 dias a uma data inicial (trial / revisão de OKR)

Start date : 2026-01-15 (Quinta-feira)
Operation  : + 90 dias
Result     : 2026-04-15 (Quarta-feira)
Use case   : Fim de período de trial de 90 dias, revisão de OKR do Q1

Subtrair 6 meses de hoje

Start date : 2026-06-11
Operation  : - 6 meses
Result     : 2025-12-11
Use case   : Olhar seis meses para trás para análise de renovação ou churn

Adicionar 2 anos 3 meses 5 dias (validade de visto)

Start date : 2026-01-15
Step 1 : + 2 anos    -> 2028-01-15
Step 2 : + 3 meses   -> 2028-04-15
Step 3 : + 5 dias    -> 2028-04-20
Result     : 2028-04-20

Virada de fim de mês: 31 Jan + 1 mês

Start date : 2026-01-31
Operation  : + 1 mês
Result     : 2026-02-28  (fevereiro tem 28 dias em 2026)

Verificação de ano bissexto:
Start date : 2028-01-31
Operation  : + 1 mês
Result     : 2028-02-29  (2028 é ano bissexto)

Subtrair 14 dias para um lembrete de cobrança

Subscription renewal : 2026-07-01
Operation            : - 14 dias
Send reminder on     : 2026-06-17

Perguntas frequentes

Como funciona somar 'meses' em datas no fim do mês?

Os meses não têm todos a mesma quantidade de dias, então somar 1 mês a 31 de janeiro é ambíguo. A calculadora segue a convenção padrão: limita ao último dia do mês de destino — 31 de janeiro + 1 mês = 28 de fevereiro (ou 29 em anos bissextos). Isso corresponde à função EDATE do Excel.

Finais de semana e feriados são contados?

Por padrão, sim — 'somar 5 dias' soma 5 dias corridos. Para cálculos em dias úteis (pulando finais de semana e, opcionalmente, feriados) use a ferramenta dedicada 'Calculadora de Dias Úteis'; esta página é para aritmética de calendário pura.

Posso somar anos, meses, semanas e dias de uma só vez?

Sim. O resultado os aplica na ordem anos → meses → semanas → dias, que é a convenção usada pela maioria das bibliotecas de data, incluindo a proposta Temporal do JavaScript. Essa ordem importa: '1 mês e 30 dias' somados a 1 de janeiro caem em uma data diferente de '30 dias e 1 mês'.

Como ela lida com o horário de verão?

O cálculo opera sobre datas de calendário, não sobre tempo absoluto, então somar 'um dia' atravessando uma transição de horário de verão ainda produz o mesmo horário do dia no fuso local. Se você precisa de aritmética com precisão de 24 horas, troque a unidade para horas em vez de dias.

Qual é o intervalo de datas suportado?

O Date do JavaScript cobre ±100.000.000 dias a partir de 1970, o que vai aproximadamente do ano -271.821 ao 275.760. A calculadora lida com qualquer data histórica ou no futuro distante dentro desse intervalo. Para datas anteriores à reforma do calendário gregoriano (1582), atenção: os calendários civis locais divergem.

Por que subtrair duas datas é diferente de somar dias negativos?

Não é diferente — subtrair N dias é o mesmo que somar -N. Se você quer a diferença entre duas datas, use a ferramenta 'Diferença entre Datas'. Esta página é aritmética unidirecional: data inicial mais ou menos uma duração.

Meus dados são enviados para algum servidor?

Não. O cálculo roda no seu navegador. Os campos são apagados quando você atualiza a página.