Calcular la fecha de ayer en JavaScript

Resuelto Omega asked hace 13 años • 20 respuestas

¿ Cómo puedo calcular ayer como fecha en JavaScript?

Omega avatar Apr 01 '11 16:04 Omega
Aceptado
var date = new Date();

date ; //# => Fri Apr 01 2011 11:14:50 GMT+0200 (CEST)

date.setDate(date.getDate() - 1);

date ; //# => Thu Mar 31 2011 11:14:50 GMT+0200 (CEST)
James Kyburz avatar Apr 01 '2011 09:04 James Kyburz

[junio de 2023] Aquí hay una biblioteca para manipular un ES-Date.

[edición de septiembre de 2020] : un fragmento que contiene la respuesta anterior y se agregó una función de flecha.

// a (not very efficient) oneliner
let yesterday = new Date(new Date().setDate(new Date().getDate()-1));
console.log(`Yesterday (oneliner)\n${yesterday}`);

// a function call
yesterday = ( function(){this.setDate(this.getDate()-1); return this} )
            .call(new Date);
console.log(`Yesterday (function call)\n${yesterday}`);

// an iife (immediately invoked function expression)
yesterday = function(d){ d.setDate(d.getDate()-1); return d}(new Date);
console.log(`Yesterday (iife)\n${yesterday}`);

// oneliner using es6 arrow function
yesterday = ( d => new Date(d.setDate(d.getDate()-1)) )(new Date);
console.log(`Yesterday (es6 arrow iife)\n${yesterday}`);

// use a method
const getYesterday = (dateOnly = false) => {
  let d = new Date();
  d.setDate(d.getDate() - 1);
  return dateOnly ? new Date(d).toDateString() : d;
};
console.log(`Yesterday (method)\n${getYesterday()}`);
console.log(`Yesterday (method dateOnly=true)\n${getYesterday(true)}`);

// use Date.now
console.log(`Yesterday, using Date.now\n${new Date(Date.now() - 864e5)}`);
.as-console-wrapper {
    max-height: 100% !important;
}
Expandir fragmento

KooiInc avatar Apr 01 '2011 09:04 KooiInc

Sorprendentemente, no hay respuesta a la solución más sencilla para varios navegadores.

Para encontrar exactamente la misma hora ayer*:

var yesterday = new Date(Date.now() - 86400000); // that is: 24 * 60 * 60 * 1000

*: Esto funciona bien si a su caso de uso no le importa la posible imprecisión con las rarezas del calendario (como el horario de verano); de lo contrario, recomendaría usar https://moment.github.io/luxon/

Fabiano Soriani avatar May 04 '2016 14:05 Fabiano Soriani