Calculer la date d'hier en JavaScript
Comment puis-je calculer hier comme une date en JavaScript?
13 réponses
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 sont inutilement inutiles. Cela 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 la fonction flèche:
let yesterday = ( d => new Date(d.setDate(d.getDate()-1)) )(new Date);
Essayez ceci
var d = new Date();
d.setDate(d.getDate() - 1);
Étonnamment aucun point de réponse à la solution cross browser la plus facile
Pour trouver exactement la même heure hier:
var yesterday = new Date(Date.now() - 86400000); // that is: 24 * 60 * 60 * 1000
, C'est si vous voulez aller de dépendance libre, sinon je vous recommande d'utiliser http://momentjs.com
Pour généraliser la question et faire d'autres calculs de diff, utilisez:
var yesterday = new Date((new Date()).valueOf() - 1000*60*60*24);
Cela crée un nouvel objet date basé sur la valeur de " now " comme un entier qui représente l'époque unix en millisecondes en 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 de minutes
var d = new Date();
d.setDate(d.getDate() - 1);
d.setTime(d.getTime()-d.getHours()*3600*1000-d.getMinutes()*60*1000);
Essayez ceci, fonctionne pour moi:
var today = new Date();
var yesterday = new Date(today.setDate(today.getDate() - 1)); `
Cela m'a ramené un objet de date pour hier
new Date(new Date().setDate(new Date().getDate()-1))
Si vous voulez à la fois obtenir la date d'hier et formater cette date dans un format lisible par l'homme, envisagez de créer un objet DateHelper
personnalisé qui ressemble à 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 ce Violon)
Vous pouvez utiliser momentjs il est très utile que vous puissiez réaliser beaucoup de choses avec cette bibliothèque.
Obtenir la date d'hier avec le calendrier actuel
moment().subtract(1, 'days').toString()
Obtenir la date d'hier avec un début de la date
moment().subtract(1, 'days').startOf('day').toString()