2008-08-28 11 views
14

Necesito disminuir una fecha de Javascript en 1 día, para que retroceda en meses/años correctamente. Es decir, si tengo una fecha de 'Hoy', quiero obtener la fecha para 'Ayer'.¿Cuál es la forma más simple de disminuir una fecha en Javascript en 1 día?

Siempre parece tomar más código de lo necesario cuando hago esto, así que me pregunto si hay una manera simple.

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

[Editar:. Sólo para evitar la confusión en una respuesta más adelante, este es un pregunta JavaScript, no un Java uno]

+0

Aquí es una función que puede hacer ambas cosas incremento y decremento: http://stackoverflow.com/a/29199863/4021614 –

Respuesta

27

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

 
console.log(d);

+4

esto devolverá el día incorrecto. bajo UTC -03: 00, verifique var d = new Fecha (2014,9,19) d.setDate (d.getDate() - 1); // devolverá el 17 de octubre –

+1

también devuelve el año incorrecto. nueva fecha (nueva fecha(). getDate() - 1) devuelve 1969 para mí –

5
var today = new Date(); 
var yesterday = new Date().setDate(today.getDate() -1); 
3

getDate()-1 debe hacer el truco

Ejemplo rápido:

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

console.log(decrementedDate); 
+0

¡Esto funciona bien! –

3
day.setDate(day.getDate() -1); //will be wrong 

esto devolverá día equivocado. bajo UTC -03: 00, compruebe si hay

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 
Cuestiones relacionadas