Calculer la date d'hier en JavaScript

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

190
demandé sur Xufox 2011-04-01 13:11:08

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)
321
répondu James Kyburz 2011-04-01 09:15:29

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);
61
répondu KooiInc 2016-09-16 10:18:43

Essayez ceci

var d = new Date();
d.setDate(d.getDate() - 1);
56
répondu ashishjmeshram 2011-04-01 09:13:55

É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

37
répondu Fabiano Soriani 2017-09-21 00:36:08

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);
14
répondu Ami Heines 2014-05-29 15:21:29
//Create a date object using the current time
var now = new Date();

//Subtract one day from it
now.setDate(now.getDate()-1);
6
répondu Billyhomebase 2011-04-03 01:16:46

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);
5
répondu Evgeni Makarov 2013-12-04 21:21:26

J'utilise moment bibliothèque, il est très flexible et facile à utiliser.

Dans votre cas:

let yesterday = moment().add(-1, 'day').toDate();

====== mise à JOUR ======

let yesterday = moment().subtract(1, 'day').toDate();
3
répondu guyaloni 2018-05-10 10:24:49
d.setHours(0,0,0,0);

Fera l'affaire

2
répondu godzillante 2014-03-23 01:19:18

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

1
répondu Ken Ye 2017-10-12 03:19:38
new Date(new Date().setDate(new Date().getDate()-1))
1
répondu Gopinath Radhakrishnan 2018-08-09 05:44:39

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)

0
répondu John Slegers 2018-07-25 08:38:42

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

0
répondu Abhishek Kumar Pandey 2018-07-25 08:47:35