¿Cómo restar días a una fecha simple?
¿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.
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
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/
Es algo parecido a esto:
var d = new Date(); // today!
var x = 5; // go back 5 days!
d.setDate(d.getDate() - x);
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
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));