web-dev-qa-db-fra.com

Calculer la date hier en JavaScript

Comment puis-je calculer hier comme une date en JavaScript?

208
Omega
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)
348
James Kyburz

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);
66
KooiInc

Essaye ça 

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

É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

45
Fabiano Soriani

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);
16
Ami Heines
//Create a date object using the current time
var now = new Date();

//Subtract one day from it
now.setDate(now.getDate()-1);
6
Billyhomebase

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);
5
Evgeni Makarov

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();
5
guyaloni
new Date(new Date().setDate(new Date().getDate()-1))
3

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

2
Ken Ye
d.setHours(0,0,0,0);

fera l'affaire

2
godzillante

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);

1
Deepu Reghunath

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()

0

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 )

0
John Slegers