Adicionar dias a uma Date de JavaScript

Neste artigo você vai aprender a como adicionar dias a uma Date de JavaScript, Date é a classe que manipula datas na linguagem JS

Adicionar dias a uma Date capa

Fala programador(a), beleza? Bora aprender mais sobre a class Date e também sobre a linguagem JavaScript!

Para realizar esta ação vamos precisar de diversas ações no nosso sistema, então preferi a abordagem de criar uma função para isto

Primeiramente vamos precisar da nossa data, criaremos uma com a instância da classe Date

Depois utilizaremos setDate, um método da classe, para modificar a data adicionando os dias

E por fim vamos retornar o resultado final

Veja um exemplo da função, conforme o explicado acima:

const data = new Date();

const dias = 10;

console.log(data.toISOString().slice(0, 10)); // 2021-05-02

function addDays(date, days) {
  date.setDate(date.getDate() + days);
  return date;
}

const novaData = addDays(data, dias);

console.log(novaData.toISOString().slice(0, 10));  // 2021-05-12

Primeiramente criamos a variável de data e também de dias a adicionar

A data foi exibida posteriormente, podemos fazer facilmente isso com: toISOString().slice(0, 10)

Depois foi criada a função, que aceita dois parâmetros:

  • Nossa data;
  • E os dias a serem adicionados;

Por fim aplicamos a função na nossa data e exibimos novamente ela, veja que foram adicionados 10 dias

Conforme o proposto pelo nosso snippet!

Conclusão

Neste artigo você aprendeu a como adicionar dias a uma Date em JavaScript

Utilizamos uma função para isso, que nós mesmos criamos

Basicamente ela recebe uma data válida de instância de Date e também os dias a serem adicionados

Por meio do método setDate modificamos a data e retornamos ela ao sistema

Confira nossos cursos gratuitos no Youtube, com vídeos todos os dias!

Se inscreva e ative o sininho para receber as notificações e aprender mais ainda sobre desenvolvimento web!

Veja também nosso catálogo de cursos na Udemy, todos com exercícios e projetos práticos, nas mais diversas tecnologias

O link acima contém um cupom de desconto para os cursos!

Se liga num detalhe importante: o método setDate modifica a data original ali dentro da função, ou seja, ele muda a variável que você passou

Às vezes isso te ferra, principalmente quando você ainda precisa da data antiga em outro lugar do código

Pra fugir disso é só criar uma cópia da data antes de mexer nela:

function addDays(date, days) { const novaData = new Date(date); novaData.setDate(novaData.getDate() + days); return novaData; }

Agora a data original fica intacta e você recebe uma nova instância só com os dias somados

Bora testar os dois jeitos e ver a diferença?

A lógica é a mesma, só que ao contrário

Como o setDate aceita o valor que você mandar, é só passar os dias negativos ou usar subtração no getDate:

function subtractDays(date, days) { const novaData = new Date(date); novaData.setDate(novaData.getDate() – days); return novaData; }

Aí você consegue voltar no tempo também, tipo pegar a data de 7 dias atrás

O massa é que o próprio JavaScript já vira o mês e o ano pra você quando o número passa do limite, não precisa se preocupar com isso

Como adicionar dias a uma data específica, e não a data de hoje?

É só criar a Date com a data que você quer, tipo new Date(‘2021-05-02’), e passar ela pra função

O setDate vira o mês automaticamente?

Vira sim, o JavaScript ajusta o mês e o ano sozinho quando os dias passam do fim do mês, então dia 30 de janeiro mais 5 dias já cai em fevereiro certinho

Posso somar dias direto sem criar função?

Pode, dá pra fazer numa linha com data.setDate(data.getDate() + 10), a função é só pra deixar reaproveitável e mais organizado

Leia também

Subscribe
Notify of
guest

1 Comentário
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Edir Nunes

Perfeito!!!
Uma dúvida, e se fosse para retornar/adicionar somente considerando dias úteis?
grande abç,

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 473 aulas
  • 20 projetos
  • 39h 26min

Blog | Mais populares