Adicionar dias à data actual em JavaScript
-
Compreender a classe
Date
em JavaScript -
Adicionando Dias a
Date()
em JavaScript -
Adicionar dias a
Date()
Utilizandoprototype
em JavaScript
Este tutorial irá introduzir como adicionar um novo dia à data actual ou uma data personalizada em JavaScript. Vamos primeiro introduzir o que é Date
e diferentes métodos na classe Date
em JavaScript.
Compreender a classe Date
em JavaScript
Em JavaScript, a classe Date
é basicamente o número de milissegundos que passaram desde a meia-noite de 1 de Janeiro de 1970, UTC. Não é o mesmo que a época Unix, que é utilizada em computadores para registar valores de data e hora.
Para começar a utilizar a classe Date
, precisamos de criar um novo objecto Date
para lidar, e a criação desse objecto pode ser feita de muitas maneiras, como podemos ver no exemplo seguinte:
var myDate = new Date();
var myDateOne = new Date('August 19, 2020 23:15:30');
var myDateTwo = new Date('2020-08-17T03:24:00');
var myDateThree = new Date(2020, 07, 17);
var myDateFour = new Date(2020, 07, 17, 3, 24, 0);
console.log(myDate);
console.log(myDateOne);
console.log(myDateTwo);
console.log(myDateThree);
console.log(myDateFour);
Quando chamamos o construtor de Date()
sem dar parâmetros, o objecto Date
terá a data e hora actuais; enquanto que quando lhe é dado um parâmetro, esse objecto terá a string parsed que representa esse ponto do tempo.
Se dermos o valor apropriado dos componentes de data e hora como no exemplo new Date(2020, 07, 17)
, o índice deve começar a partir de 0 e não de 1.
Resultado:
Fri Nov 13 2020 19:16:58 GMT+0200 (Eastern European Standard Time)
Mon Aug 17 2020 23:15:30 GMT+0200 (Eastern European Standard Time)
Mon Aug 17 2020 03:24:00 GMT+0200 (Eastern European Standard Time)
Mon Aug 17 2020 00:00:00 GMT+0200 (Eastern European Standard Time)
Mon Aug 17 2020 03:24:00 GMT+0200 (Eastern European Standard Time)
Utilizamos frequentemente muitos métodos da classe Date
; explicaremos alguns deles nas secções seguintes.
Adicionando Dias a Date()
em JavaScript
Suponhamos que queremos criar uma função que acrescenta um certo número de dias em JavaScript. Nesse caso, podemos implementá-la utilizando o método de classe Date
chamado getDate()
que retorna o dia do mês, entre 1 e 31, para a data seleccionada de acordo com a hora local, e o método setDate()
para definir o dia do mês para essa data específica.
Por exemplo, se a data for 11/02/2020
, acrescentando um dia será 12/02/2020
. Se for 31/03/2020
, será 01/04/2020
, pois o único intervalo válido será [1, 31]
.
Vejamos o seguinte exemplo de adição de dias ao objecto Date
.
function addDaysToDate(date, days) {
var res = new Date(date);
res.setDate(res.getDate() + days);
return res;
}
var tmpDate = new Date(2020, 07, 20); // Augest 20, 2020
console.log(addDaysToDate(tmpDate, 2));
Resultado:
Sat Aug 22 2020 00:00:00 GMT+0200 (Eastern European Standard Time)
Se estivermos interessados em adicionar esse dia a hoje, podemos substituir new Date(date)
por new Date()
no código acima, ou podemos passar a new Date()
directamente para a função.
var tmpDate = new Date(); // Today
console.log(addDaysToDate(tmpDate, 2)); // today + 2
Resultado:
Sun Nov 15 2020 22:55:06 GMT+0200 (Eastern European Standard Time)
Adicionar dias a Date()
Utilizando prototype
em JavaScript
Se quisermos criar um protótipo para a classe Date
que leva apenas a entrada numérica como o número de dias a adicionar, podemos implementá-lo como o exemplo seguinte:
Date.prototype.addDays =
function(noOfDays) {
var tmpDate = new Date(this.valueOf());
tmpDate.setDate(tmpDate.getDate() + noOfDays);
return tmpDate;
}
var myDate = new Date(); // today
console.log(myDate.addDays(2)); // today + 2
Resultado:
Sun Nov 15 2020 22:59:06 GMT+0200 (Eastern European Standard Time)