Comment puis-je calculer hier comme une date en JavaScript?
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)
Pas très efficace, mais comme oneliner:
var yesterday = new Date(new Date().setDate(new Date().getDate()-1));
Ce qui précède crée trois objets Date
qui constituent un gaspillage inutile. Ceci peut être réduit à une seule instanciation avec:
var yesterday = (function(){this.setDate(this.getDate()-1); return this})
.call(new Date)
Ou, si vous préférez:
var yesterday = (function(d){ d.setDate(d.getDate()-1); return d})(new Date)
Ou, si vous préférez ES6 avec fonction de flèche:
let yesterday = ( d => new Date(d.setDate(d.getDate()-1)) )(new Date);
Essaye ça
var d = new Date();
d.setDate(d.getDate() - 1);
Étonnamment, pas de réponse à la solution la plus simple pour les navigateurs multiples
Pour retrouver exactement la même heure hier:
var yesterday = new Date(Date.now() - 86400000); // that is: 24 * 60 * 60 * 1000
C’est-à-dire si vous voulez éviter les dépendances, sinon je vous recommanderais d’utiliser http://momentjs.com
Pour généraliser la question et effectuer d'autres calculs de diff, utilisez:
var yesterday = new Date((new Date()).valueOf() - 1000*60*60*24);
cela crée un nouvel objet de date basé sur la valeur de "maintenant" en tant qu'entier représentant l'époque unix en millisecondes soustrayant un jour.
Il y a deux jours:
var twoDaysAgo = new Date((new Date()).valueOf() - 1000*60*60*24*2);
Il y a une heure:
var oneHourAgo = new Date((new Date()).valueOf() - 1000*60*60);
//Create a date object using the current time
var now = new Date();
//Subtract one day from it
now.setDate(now.getDate()-1);
Cela produira hier à 00:00 avec une précision des minutes
var d = new Date();
d.setDate(d.getDate() - 1);
d.setTime(d.getTime()-d.getHours()*3600*1000-d.getMinutes()*60*1000);
J'utilise moment library, il est très flexible et facile à utiliser.
Dans ton cas:
let yesterday = moment().add(-1, 'day').toDate();
====== UPDATE ======
let yesterday = moment().subtract(1, 'day').toDate();
new Date(new Date().setDate(new Date().getDate()-1))
Essayez ceci, ça marche pour moi:
var today = new Date();
var yesterday = new Date(today.setDate(today.getDate() - 1)); `
Cela m'a valu un objet date pour hier
d.setHours(0,0,0,0);
fera l'affaire
var today = new Date();
var yesterday1 = new Date(new Date().setDate(new Date().getDate() - 1));
var yesterday2 = new Date(Date.now() - 86400000);
var yesterday3 = new Date(Date.now() - 1000*60*60*24);
var yesterday4 = new Date((new Date()).valueOf() - 1000*60*60*24);
console.log("Today: "+today);
console.log("Yesterday: "+yesterday1);
console.log("Yesterday: "+yesterday2);
console.log("Yesterday: "+yesterday3);
console.log("Yesterday: "+yesterday4);
Vous pouvez utiliser momentanément, il est très utile de pouvoir réaliser beaucoup de choses avec cette bibliothèque.
Obtenir la date d'hier avec l'heure actuelle moment().subtract(1, 'days').toString()
Obtenir la date d'hier avec le début de la date moment().subtract(1, 'days').startOf('day').toString()
Si vous souhaitez obtenir la date d'hier et la formater dans un format lisible par l'homme, envisagez de créer un objet DateHelper
personnalisé ressemblant à ceci:
var DateHelper = {
addDays : function(aDate, numberOfDays) {
aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays
return aDate; // Return the date
},
format : function format(date) {
return [
("0" + date.getDate()).slice(-2), // Get day and pad it with zeroes
("0" + (date.getMonth()+1)).slice(-2), // Get month and pad it with zeroes
date.getFullYear() // Get full year
].join('/'); // Glue the pieces together
}
}
// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Subtract 1 day
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), -1));
(voir aussi this Fiddle )