¿Cómo restar días a una fecha simple?

Resuelto jonhobbs asked hace 15 años • 38 respuestas

¿Existe una manera fácil de tomar un JavaScript simple Date(por ejemplo, hoy) y retroceder X días?

Entonces, por ejemplo, si quiero calcular la fecha 5 días antes de hoy.

jonhobbs avatar Aug 19 '09 03:08 jonhobbs
Aceptado

Pruebe algo como esto:

 var d = new Date();
 d.setDate(d.getDate() - 5);

Tenga en cuenta que esto modifica el objeto de fecha y devuelve el valor de hora de la fecha actualizada.

var d = new Date();

document.write('Today is: ' + d.toLocaleString());

d.setDate(d.getDate() - 5);

document.write('<br>5 days ago was: ' + d.toLocaleString());
Expandir fragmento

Stephen Wrighton avatar Aug 18 '2009 20:08 Stephen Wrighton
var dateOffset = (24*60*60*1000) * 5; //5 days
var myDate = new Date();
myDate.setTime(myDate.getTime() - dateOffset);

Si está realizando muchas manipulaciones de fechas en su aplicación web, DateJS le hará la vida mucho más fácil:

http://simonwillison.net/2007/Dec/3/datejs/

karim79 avatar Aug 18 '2009 20:08 karim79

Es algo parecido a esto:

var d = new Date(); // today!
var x = 5; // go back 5 days!
d.setDate(d.getDate() - x);
Chris Nielsen avatar Aug 18 '2009 20:08 Chris Nielsen

Si lo quieres todo en una sola línea.

5 días a partir de hoy

//past
var fiveDaysAgo = new Date(new Date().setDate(new Date().getDate() - 5));
//future
var fiveDaysInTheFuture = new Date(new Date().setDate(new Date().getDate() + 5));

5 días a partir de una fecha específica

 var pastDate = new Date('2019-12-12T00:00:00');

 //past
 var fiveDaysAgo = new Date(new Date().setDate(pastDate.getDate() - 5));
 //future
 var fiveDaysInTheFuture = new Date(new Date().setDate(pastDate.getDate() + 5));

Escribí una función que puedes usar.

function AddOrSubractDays(startingDate, number, add) {
  if (add) {
    return new Date(new Date().setDate(startingDate.getDate() + number));
  } else {
    return new Date(new Date().setDate(startingDate.getDate() - number));
  }
}

console.log('Today : ' + new Date());
console.log('Future : ' + AddOrSubractDays(new Date(), 5, true));
console.log('Past : ' + AddOrSubractDays(new Date(), 5, false));
Expandir fragmento

BondAddict avatar Nov 12 '2019 23:11 BondAddict

Noté que getDays+ X no funciona con límites de día/mes. El uso de getTime funciona siempre que la fecha no sea anterior a 1970.

var todayDate = new Date(), weekDate = new Date();
weekDate.setTime(todayDate.getTime()-(7*24*3600000));
awjr avatar Jun 23 '2014 16:06 awjr