Pregunta

Necesito disminuir una fecha de Javascript en 1 día, para que retroceda correctamente en meses/años.Es decir, si tengo una fecha de "Hoy", quiero obtener la fecha de "Ayer".

Siempre parece que se necesita más código del necesario cuando hago esto, así que me pregunto si hay alguna forma más sencilla.

¿Cuál es la forma más sencilla de hacer esto?

[Editar:Solo para evitar confusión en la respuesta a continuación, esta es una javascript pregunta, no de Java.]

¿Fue útil?

Solución

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

console.log(d);

Otros consejos

var today = new Date();
var yesterday = new Date().setDate(today.getDate() -1);
 day.setDate(day.getDate() -1); //will be wrong

esto volverá el día equivocado.bajo UTC -03:00, verifique si

var d = new Date(2014,9,19);
d.setDate(d.getDate()-1);// will return Oct 17

Mejor uso:

var n = day.getTime();
n -= 86400000;
day = new Date(n); //works fine for everything

getDate()-1 debería hacer el truco

Ejemplo rápido:

var day = new Date( "January 1 2008" );
day.setDate(day.getDate() -1);
alert(day);
origDate = new Date();
decrementedDate = new Date(origDate.getTime() - (86400 * 1000));

console.log(decrementedDate);

setDate(dayValue)

dayValue es un número entero del 1 al 31, que representa el día del mes.

de https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/setDate

El comportamiento que resuelve su problema (y el mío) parece estar fuera del rango de especificación.

Lo que parece necesario son addDate(), addMonth(), addYear()...funciones.

Trabajar con fechas en JS puede ser un dolor de cabeza.Así que la forma más sencilla es utilizar momento.js para operaciones de cualquier fecha.

Para restar un día:

const date = moment().subtract(1, 'day')
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top